/// <summary> /// 初始化Socket Server /// </summary> /// <param name="config"></param> static public void Init(Config.SocketServerConfig config) { if (config == null) { throw new ArgumentNullException("config"); } if (config.Servers == null) { return; } foreach (Config.Server serverConfig in config.Servers) { //inti protocol var objProtocol = GetProtocol(serverConfig.Protocol); if (objProtocol == null) { throw new InvalidOperationException("protocol"); } //init custom service var tService = Type.GetType(serverConfig.ServiceType, false); if (tService == null) { throw new InvalidOperationException("serviceType"); } var tAbsService = tService; while (true) { tAbsService = tAbsService.BaseType; if (tAbsService.Name == typeof(AbsSocketService <>).Name) { break; } } var objService = Activator.CreateInstance(tService); if (objService == null) { throw new InvalidOperationException("serviceType"); } //init host. var host = Activator.CreateInstance(typeof(SocketServer <>).MakeGenericType( tAbsService.GetGenericArguments()), objService, objProtocol, serverConfig.SocketBufferSize, serverConfig.MessageBufferSize, serverConfig.MaxMessageSize, serverConfig.MaxConnections) as AbsSocketServer; host.AddListener(serverConfig.Name, new IPEndPoint(IPAddress.Any, serverConfig.Port)); _listHosts.Add(host); _dicHosts[serverConfig.Name] = host; } }
/// <summary> /// 初始化Socket Server /// </summary> /// <param name="config"></param> static public void Init(Config.SocketServerConfig config) { if (config == null) { throw new ArgumentNullException("config"); } if (config.Servers == null) { return; } foreach (Config.Server serverConfig in config.Servers) { //inti protocolHandlerFactory var objProtocolHandlerFactory = GetProtocolHandlerFactory(serverConfig.ProtocolHandlerFactory); if (objProtocolHandlerFactory == null) { throw new InvalidOperationException("protocolHandlerFactory"); } //init custom service var tService = Type.GetType(serverConfig.ServiceType, false); if (tService == null) { throw new InvalidOperationException("serviceType"); } var objService = Activator.CreateInstance(tService); if (objService == null) { throw new InvalidOperationException("serviceType"); } var messageTypes = objProtocolHandlerFactory.GetType().GetInterface(typeof(IProtocolHandlerFactory <, ,>).Name).GetGenericArguments(); var socketServerType = typeof(SocketServer <,>).MakeGenericType(messageTypes[1], messageTypes[2]); //init host. _connectionManagerCollection.Add(serverConfig.Name, Activator.CreateInstance( socketServerType, serverConfig.Port, objService, objProtocolHandlerFactory, serverConfig.SocketBufferSize, serverConfig.MessageBufferSize, serverConfig.MaxMessageSize, serverConfig.MaxConnections) as SocketBase.IConnectionManager); } }
/// <summary> /// 初始化Socket Server /// </summary> /// <param name="config"></param> static public void Init(Config.SocketServerConfig config) { if (config == null) { throw new ArgumentNullException("config"); } if (config.Servers == null) { return; } foreach (Config.Server serverConfig in config.Servers) { //inti protocol var objProtocol = GetProtocol(serverConfig.Protocol); if (objProtocol == null) { throw new InvalidOperationException("protocol"); } //init custom service var tService = Type.GetType(serverConfig.ServiceType, false); if (tService == null) { throw new InvalidOperationException("serviceType"); } var objService = Activator.CreateInstance(tService); if (objService == null) { throw new InvalidOperationException("serviceType"); } //init host. _dicHosts.Add(serverConfig.Name, Activator.CreateInstance( typeof(SocketServer <>).MakeGenericType( objProtocol.GetType().GetInterface(typeof(Protocol.IProtocol <>).Name).GetGenericArguments()), serverConfig.Port, objService, objProtocol, serverConfig.SocketBufferSize, serverConfig.MessageBufferSize, serverConfig.MaxMessageSize, serverConfig.MaxConnections) as SocketBase.IHost); } }