Esempio n. 1
0
 public static void AddService(string _serviceName, IServerPlugin _iplugin)
 {
     if (!_serviceLib.ContainsKey(_serviceName))
     {
         _serviceLib.Add(_serviceName, _iplugin);
     }
 }
Esempio n. 2
0
        public bool LoadPlugin(string pluginName)
        {
            string  AssemblyFile;
            Boolean result = false;

            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            PluginConfigurationElement pe = new PluginConfigurationElement();

            String path = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "";

            try
            {
                for (Int32 i = 0; i < config.PluginCollection.Count; i++)
                {
                    pe = config.PluginCollection[i];
                    if (pe.Name == pluginName)
                    {
                        if (pe.Version == "")
                        {
                            AssemblyFile = path + "\\" + pe.Assembly;
                        }
                        else
                        {
                            AssemblyFile = path + "\\Plugin\\" + pe.Version + "\\" + pe.Assembly;
                            if (!File.Exists(AssemblyFile))
                            {
                                AssemblyFile = path + "\\" + pe.Assembly;
                            }
                        }

                        Assembly      assembly = Assembly.LoadFile(AssemblyFile);
                        Type          type     = assembly.GetType(pe.Type);
                        IServerPlugin instance = (IServerPlugin)Activator.CreateInstance(type);
                        instance.ServerApplication = application;
                        instance.Load();
                        plugins[pluginName] = instance;
                        result = true;

                        AppPluginInfo _apinfo = new AppPluginInfo();
                        _apinfo.Descript        = pe.Description;
                        _apinfo.PluginType      = pe.Type;
                        _apinfo.Name            = pe.Name;
                        _apinfo.FileName        = pe.Assembly;
                        _apinfo.AssemblyVersion = assembly.GetName().Version.ToString();
                        CurrentPluginInfos.Add(_apinfo);
                        break;
                    }
                }
                if (!result)
                {
                    application.WriteMessage(string.Format("未找到插件{0}!", pluginName), EventLogEntryType.Error);
                }
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message), EventLogEntryType.Error);
                result = false;
            }
            return(result);
        }
Esempio n. 3
0
        private IServerPlugin CreatePluginInstance(IServerPlugin plugin)
        {
            ConstructorInfo ctor = plugin.GetType().GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, CallingConventions.HasThis, new Type[] { }, null);

            Object_Functions.ObjectActivator <IServerPlugin> createdActivator = Object_Functions.GetActivator <IServerPlugin>(ctor);

            return(createdActivator());
        }
Esempio n. 4
0
        public IServerPlugin GetPluginInstance(string pluginName)
        {
            IServerPlugin plugin = null;

            if (plugins.ContainsKey(pluginName))
            {
                plugin = plugins[pluginName];
            }
            return(plugin);
        }
Esempio n. 5
0
        public ClientsTableForm(ref IServerPlugin[] plugins, int port)
        {
            _plugins = plugins;
            _port = port;
            _ip = HashOps.GetFqdn();
            InitializeComponent();
            handle.MouseDown += handle_MouseDown;
            handle.MouseMove += handle_MouseMove;
            handle.MouseUp += handle_MouseUp;

            LoadPlugIns();
        }
Esempio n. 6
0
        private object GetInterFaceObject(string _serviceName)
        {
            IServerPlugin _plugin = ServiceLib.GetService(_serviceName);

            if (_plugin == null)
            {
                throw new Exception(string.Format("服务器端未提供此服务:{0}", _serviceName));
            }
            else
            {
                return(_plugin.GetServiceObject(_serviceName));
            }
        }
Esempio n. 7
0
        public void LoadAllPlugin()
        {
            application.WriteMessage("开始加载插件!", EventLogEntryType.Information);
            CurrentPluginInfos = new List <AppPluginInfo>();
            PluginConfigurationElement pe = new PluginConfigurationElement();

            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            if (config == null)
            {
                application.WriteMessage("未配置插件文件!", EventLogEntryType.Error);
                return;
            }
            String path = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "";

            try
            {
                for (Int32 i = 0; i < config.PluginCollection.Count; i++)
                {
                    pe = config.PluginCollection[i];
                    if (File.Exists(path + "\\" + pe.Assembly))
                    {
                        Assembly assembly = Assembly.LoadFile(path + "\\" + pe.Assembly);

                        Type          type     = assembly.GetType(pe.Type);
                        IServerPlugin instance = (IServerPlugin)Activator.CreateInstance(type);
                        instance.ServerApplication = application;
                        instance.Load();
                        plugins[pe.Name] = instance;

                        AppPluginInfo _apinfo = new AppPluginInfo();
                        _apinfo.Descript        = pe.Description;
                        _apinfo.PluginType      = pe.Type;
                        _apinfo.Name            = pe.Name;
                        _apinfo.FileName        = pe.Assembly;
                        _apinfo.AssemblyVersion = assembly.GetName().Version.ToString();
                        CurrentPluginInfos.Add(_apinfo);
                    }
                    else
                    {
                        application.WriteMessage(string.Format("服务器端插件文件{0}不存在!", pe.Assembly), EventLogEntryType.Error);
                    }
                }
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message), EventLogEntryType.Error);
            }
            application.WriteMessage("加载插件结束...", EventLogEntryType.Information);
        }
Esempio n. 8
0
        public bool UnLoadPlugin(string pluginName)
        {
            Boolean result = false;

            try
            {
                IServerPlugin plugin = GetPluginInstance(pluginName);
                plugin.UnLoad();
                result = true;
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message));
            }
            return(result);
        }
Esempio n. 9
0
        private static void CallMethod(IServerPlugin pServerPlugin, string pName)
        {
            if (!IsAsphaltPlugin(pServerPlugin.GetType()))
            {
                return;
            }

            MethodInfo mi = pServerPlugin.GetType().GetMethod(pName);

            if (mi == null)
            {
                return;
            }

            mi.Invoke(pServerPlugin, new object[] { });
        }
        public static void LoadPlugins()
        {
            string[] strs = File.ReadAllLines(PLUGIN_CONFIG_FILE);

            foreach (string s in strs)
            {
                PluginInfo info = Parse(s);

                IServerPlugin plugin = Assist.CreateInstanceFromAssembly <IServerPlugin>(info.assembly, info.className);

                if (plugin != null)
                {
                    plugins.Add(plugin);
                    plugin.OnServerPluginEvent(ServerPluginEvent.PluginLoaded, null);
                }
            }

            Debug.Log("ServerPluginController: plugins=" + plugins.Count);
        }
        public OperationState Load(IServerPlugin plugin)
        {
            try
            {
                var tcpServer = new TcpSocketServer();
                plugin.InitTransports(new List <IServerTransport> {
                    tcpServer
                });
            }
            catch (Exception ex)
            {
                return(new OperationState {
                    IsSuccessful = false, Details = ex.ToString()
                });
            }

            return(new OperationState {
                IsSuccessful = true
            });
        }
Esempio n. 12
0
        private byte[] DoCommandInPlugin(string PluginName, string CommandName, byte[] ParameterData)
        {
            IServerPlugin _plugin = ServerPluginService.CurrentService.GetPluginInstance(PluginName);

            if (_plugin != null)
            {
                byte[] _ret = _plugin.DoCommand(CommandName, ParameterData);
                if (_ret == null)
                {
                    return(CommandCanNotUse());
                }
                else
                {
                    return(_ret);
                }
            }
            else
            {
                return(CommandCanNotUse());
            }
        }
Esempio n. 13
0
        public bool LoadPlugin(string pluginName)
        {
            Boolean result = false;

            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            PluginConfigurationElement pe = new PluginConfigurationElement();

            String path = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "";

            try
            {
                for (Int32 i = 0; i < config.PluginCollection.Count; i++)
                {
                    pe = config.PluginCollection[i];
                    if (pe.Name == pluginName)
                    {
                        Assembly      assembly = Assembly.LoadFile(path + "\\" + pe.Assembly);
                        Type          type     = assembly.GetType(pe.Type);
                        IServerPlugin instance = (IServerPlugin)Activator.CreateInstance(type);
                        instance.ServerApplication = application;
                        instance.Load();
                        plugins[pluginName] = instance;
                        result = true;
                        break;
                    }
                }
                if (!result)
                {
                    application.WriteMessage(string.Format("未找到插件{0}!", pluginName));
                }
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message));
                result = false;
            }
            return(result);
        }
Esempio n. 14
0
        public void LoadAllPlugin()
        {
            PluginConfigurationElement pe = new PluginConfigurationElement();

            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            if (config == null)
            {
                application.WriteMessage("未配置插件文件!");
                return;
            }
            String path = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "";

            try
            {
                for (Int32 i = 0; i < config.PluginCollection.Count; i++)
                {
                    pe = config.PluginCollection[i];
                    if (File.Exists(path + "\\" + pe.Assembly))
                    {
                        Assembly      assembly = Assembly.LoadFile(path + "\\" + pe.Assembly);
                        Type          type     = assembly.GetType(pe.Type);
                        IServerPlugin instance = (IServerPlugin)Activator.CreateInstance(type);
                        instance.ServerApplication = application;
                        instance.Load();
                        plugins[pe.Name] = instance;
                    }
                    else
                    {
                        application.WriteMessage(string.Format("服务器端插件文件{0}不存在!", pe.Assembly));
                    }
                }
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message));
            }
        }
Esempio n. 15
0
 public SendDataInfo(IServerPlugin plugin, EventData data)
 {
     Plugin    = plugin;
     EventData = data;
 }
Esempio n. 16
0
 public bool AddRemotingService(string _serviceName, IServerPlugin _plugin)
 {
     //ServiceLib.AddService(_serviceName, _plugin);
     //WriteMessage(string.Format("{0}的服务接口注册成功!", _serviceName));
     return(true);
 }
Esempio n. 17
0
        private IServerPlugin CreatePluginInstance(IServerPlugin plugin)
        {
            ConstructorInfo ctor = plugin.GetType().GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, CallingConventions.HasThis, new Type[] { }, null);

            Object_Functions.ObjectActivator<IServerPlugin> createdActivator = Object_Functions.GetActivator<IServerPlugin>(ctor);

            return createdActivator();
        }
 public SendDataInfo(IServerPlugin plugin, EventData data)
 {
     Plugin = plugin;
     EventData = data;
 }