コード例 #1
0
ファイル: PlanCalculator.cs プロジェクト: Nementon/ck-desktop
 public PlanCalculator( IPluginDiscoverer discoverer, Predicate<IPluginInfo> isPluginRunning )
 {
     _discoverer = discoverer;
     _mappingArray = new List<PluginData>();
     _mappingDic = new Dictionary<IPluginInfo, PluginData>();
     IsPluginRunning = isPluginRunning;
 }
コード例 #2
0
 public PlanCalculator(IPluginDiscoverer discoverer, Predicate <IPluginInfo> isPluginRunning)
 {
     _discoverer     = discoverer;
     _mappingArray   = new List <PluginData>();
     _mappingDic     = new Dictionary <IPluginInfo, PluginData>();
     IsPluginRunning = isPluginRunning;
 }
コード例 #3
0
		/// <summary>
		/// Searches for plugins in the specified path, and loads
		/// any plugins that are found into a registry.
		/// </summary>
		/// <param name="p_pftFactory">The factory to use to create <see cref="Plugin"/>s.</param>
		/// <param name="p_pdvDiscoverer">The discoverer to use to search for plugins.</param>
		/// <returns>A registry containing all of the discovered plugin formats.</returns>
		public static PluginRegistry DiscoverManagedPlugins(IPluginFactory p_pftFactory, IPluginDiscoverer p_pdvDiscoverer)
		{
			Trace.TraceInformation("Discovering Managed Plugins...");
			Trace.Indent();

			PluginRegistry pgrRegistry = new PluginRegistry(p_pftFactory);
            if (p_pdvDiscoverer != null)
			    foreach (string strPlugin in p_pdvDiscoverer.FindPlugins())
			    {
				    Trace.TraceInformation("Found: {0}", strPlugin);
				    if (pgrRegistry.RegisterPlugin(strPlugin))
				    {
					    Trace.Indent();
					    Trace.TraceInformation("Registered.");
					    Trace.Unindent();
				    }
			    }
			Trace.Unindent();
			return pgrRegistry;
		}
コード例 #4
0
		/// <summary>
		/// Determines if the given path points at a plugin.
		/// </summary>
		/// <param name="p_strPath">The path to the file to be idecntified.</param>
		/// <returns><c>true</c> if the given path represents a plugin file;
		/// <c>false</c> otherwise.</returns>
		public bool IsPlugin(string p_strPath)
		{
			if (m_pdvDiscoverer == null)
				m_pdvDiscoverer = GameMode.GetPluginDiscoverer();
			return m_pdvDiscoverer.IsPlugin(p_strPath);
		}
コード例 #5
0
            public bool UpdatePlugin(Guid pluginId, bool runnerDisabled, ISolvedPluginConfiguration config, IEnumerable <RequirementLayer> layers, IPluginDiscoverer d)
            {
                SolvedConfigStatus s;

                Info = d.FindPlugin(pluginId);
                bool isAvailable = !(Info == null || Info.HasError || RunningError != null);

                if (isAvailable)
                {
                    if (runnerDisabled)
                    {
                        s = SolvedConfigStatus.Disabled;
                    }
                    else
                    {
                        s = config.GetStatus(pluginId);
                        foreach (RequirementLayer l in layers)
                        {
                            PluginRequirement r = l.PluginRequirements.Find(pluginId);
                            if (r != null && (int)r.Requirement > (int)s)
                            {
                                s = (SolvedConfigStatus)r.Requirement;
                            }
                        }
                    }
                }
                else
                {
                    s = SolvedConfigStatus.Disabled;
                }
                return(DoUpdateStatus(isAvailable, s));
            }
コード例 #6
0
            public bool UpdateService(string serviceFullName, bool runnerDisabled, IEnumerable <RequirementLayer> layers, IPluginDiscoverer d)
            {
                Debug.Assert(RunningError == null, "A service can not be in running error.");
                SolvedConfigStatus s;

                Info = d.FindService(serviceFullName);
                bool isAvailable = !(Info == null || Info.HasError);

                if (isAvailable)
                {
                    if (runnerDisabled)
                    {
                        s = SolvedConfigStatus.Disabled;
                    }
                    else
                    {
                        s = SolvedConfigStatus.Optional;
                        foreach (RequirementLayer l in layers)
                        {
                            ServiceRequirement r = l.ServiceRequirements.Find(serviceFullName);
                            if (r != null && (int)r.Requirement > (int)s)
                            {
                                s = (SolvedConfigStatus)r.Requirement;
                            }
                        }
                    }
                }
                else
                {
                    s = SolvedConfigStatus.Disabled;
                }
                return(DoUpdateStatus(isAvailable, s));
            }
コード例 #7
0
ファイル: PluginRegistry.cs プロジェクト: hackerlank/nmm
        /// <summary>
        /// Searches for plugins in the specified path, and loads
        /// any plugins that are found into a registry.
        /// </summary>
        /// <param name="p_pftFactory">The factory to use to create <see cref="Plugin"/>s.</param>
        /// <param name="p_pdvDiscoverer">The discoverer to use to search for plugins.</param>
        /// <returns>A registry containing all of the discovered plugin formats.</returns>
        public static PluginRegistry DiscoverManagedPlugins(IPluginFactory p_pftFactory, IPluginDiscoverer p_pdvDiscoverer)
        {
            Trace.TraceInformation("Discovering Managed Plugins...");
            Trace.Indent();

            PluginRegistry pgrRegistry = new PluginRegistry(p_pftFactory);

            if (p_pdvDiscoverer != null)
            {
                foreach (string strPlugin in p_pdvDiscoverer.FindPlugins())
                {
                    Trace.TraceInformation("Found: {0}", strPlugin);
                    if (pgrRegistry.RegisterPlugin(strPlugin))
                    {
                        Trace.Indent();
                        Trace.TraceInformation("Registered.");
                        Trace.Unindent();
                    }
                }
            }
            Trace.Unindent();
            return(pgrRegistry);
        }