Exemple #1
0
        /// <summary>
        /// Checks and initialises all the components for the application.
        /// </summary>
        static bool Init()
        {
            bool ok;

            // Set the error level
            Logger.Level = Logger.LogLevel.Info;

            // Loads all settings
            Config = LoadConfig();
            if (Config == null) return false;

            // Get port for the http server
            int httpPort = Config.Get("httpPort") ?? 80;

            // Get port for the websocket server
            int websocketPort = Config.Get("websocketPort") ?? 81;

            // Get the media detector polling interval
            int mediaPollingInterval = Config.Get("mediaPollingInterval") ?? 3000;

            // Load devices from config
            var devices = Config.Get("devices");
            if (devices is IEnumerable<JToken>)
                Devices.Device.Parse(devices as IEnumerable);

            // Init the server
            var server = new Server.ToucheeServer(httpPort, websocketPort);

            // Build plugin context
            IPluginContext pluginContext = new ToucheePluginContext(server);

            // Loads all plugins
            if (!LoadPlugins(pluginContext)) return false;

            // Kickstart WinLirc client
            var wlc = Devices.WinLirc.Client;

            // Init the library
            var library = Library.Instance;
            library.Init(server, mediaPollingInterval);

            // Start server
            if (!server.Start()) {
                Shutdown("Could not start server");
                return false;
            }

            // Show the form
            Logger.Log("Loading complete!", Logger.LogLevel.Info);
            var mainForm = new Forms.Main();
            Application.Run(mainForm);

            // Done
            return true;
        }
Exemple #2
0
        /// <summary>
        /// Starts the plugin.
        /// </summary>
        /// <param name="config">The configuration object for this plugin</param>
        /// <param name="context">The context for this plugin</param>
        /// <returns>True if the plugin was successfully started</returns>
        public bool StartPlugin(Config config, IPluginContext context)
        {
            // Get folders
            dynamic foldersConfig = config.Get("folders");
            IEnumerable<string> folders = foldersConfig is IList ? foldersConfig.Values<string>() : new string[0];

            // Get extensions
            dynamic trackExtensionsConfig = config.Get("extensions.tracks");
            TrackExtensions = trackExtensionsConfig is IList ? trackExtensionsConfig.Values<string>() : new string[0];
            dynamic playlistExtensionsConfig = config.Get("extensions.tracks");
            PlaylistExtensions = playlistExtensionsConfig is IList ? playlistExtensionsConfig.Values<string>() : new string[0];
            Extensions = TrackExtensions.Concat(PlaylistExtensions).ToArray();

            // Create the watcher and add folders to it
            Watcher = new MusicFileMediumWatcher();
            foreach(var f in folders)
                Watcher.AddLocalFolder(f);
            PluginManager.Register(Watcher);

            // Add content provider
            ContentProvider = new MusicContentProvider();
            PluginManager.Register(ContentProvider);

            // Add artwork provider
            ArtworkProvider = new MusicArtworkProvider();
            PluginManager.Register(ArtworkProvider);

            return true;
        }