public static void AddService(string _serviceName, IServerPlugin _iplugin) { if (!_serviceLib.ContainsKey(_serviceName)) { _serviceLib.Add(_serviceName, _iplugin); } }
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); }
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 IServerPlugin GetPluginInstance(string pluginName) { IServerPlugin plugin = null; if (plugins.ContainsKey(pluginName)) { plugin = plugins[pluginName]; } return(plugin); }
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(); }
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)); } }
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); }
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); }
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 }); }
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()); } }
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); }
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)); } }
public SendDataInfo(IServerPlugin plugin, EventData data) { Plugin = plugin; EventData = data; }
public bool AddRemotingService(string _serviceName, IServerPlugin _plugin) { //ServiceLib.AddService(_serviceName, _plugin); //WriteMessage(string.Format("{0}的服务接口注册成功!", _serviceName)); return(true); }
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(); }