Exemplo n.º 1
0
        public bool Start()
        {
            try
            {
                if (_server == null)
                {
                    _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(this.ListenPort));
                    _server.WireProtocolFactory = new EzWireProtocolFactory();
                    _server.ClientConnected    += server_ClientConnected;
                    _server.ClientDisconnected += server_ClientDisconnected;
                    _server.Start();

                    if (this.ActiveCheckClientAvailable)
                    {
                        start_1s_timer();
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                EzLogger.GlobalLogger.warning(string.Format("{0}{2}{1}{2}",
                                                            ex.Message, ex.StackTrace, Environment.NewLine));

                Dispose();

                return(false);
            }
        }
Exemplo n.º 2
0
        //---methods

        public ScsService(int tcpPort, int scsClientMaxCount = 8192)
        {
            _scsClientMaxCount = scsClientMaxCount;

            // Список по сути особен ну нужен, но используется
            // чтобы отделять клиентов, котоыре еще не прошли регистраци от тех кто уже прошел,
            // чтобы не пропускать не нужные событи вверх к основному приложению.
            _authenticatedUsers = new Dictionary <IScsServerClient, User>();

            //Синхронная очередь клиентских msg для тех кто еще не прошел аутентификацию
            _msgReadersForAutentification = new MsgReadersCollection();
            _msgReadersForAutentification.RegisterMsgReader <AuthenticationMessage>(AuthenticationMsgReader);
            _msgQueueForAutentification = new ConcurrentMsgQueue(_msgReadersForAutentification, _authenticatedUsers);
            _msgQueueForAutentification.ClientEventReaded += MsgQueue_ClientEventReaded;

            //Синхронная очередь клиентских msg
            _msgReaders = new MsgReadersCollection();
            _msgQueue   = new ConcurrentMsgQueue(_msgReaders, _authenticatedUsers);
            _msgQueue.ClientEventReaded += MsgQueue_ClientEventReaded;

            // Проходящите подключение клиенты
            _authenticationStates = new Dictionary <IScsServerClient, UserAuthenticationState>();

            // Scs server(tcp слой)
            _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(tcpPort));
            _server.ClientConnected    += Server_ClientConnected;
            _server.ClientDisconnected += Server_ClientDisconnected;
        }
Exemplo n.º 3
0
        public NetworkManager(string ipAddress, int port, Type packetHandler, Type fallbackEncryptor, bool isWorldServer) : base(packetHandler, isWorldServer)
        {
            _encryptor = (EncryptorT)Activator.CreateInstance(typeof(EncryptorT));

            if (fallbackEncryptor != null)
            {
                _fallbackEncryptor = (CryptographyBase)Activator.CreateInstance(fallbackEncryptor);
            }

            _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(ipAddress, port));

            // Register events of the server to be informed about clients
            _server.ClientConnected    += OnServerClientConnected;
            _server.ClientDisconnected += OnServerClientDisconnected;
            _server.WireProtocolFactory = new WireProtocolFactory <EncryptorT>();

            // Start the server
            _server.Start();

            if (port == 4002)
            {
                Console.WriteLine("[Start] Login Server has been started successfully");
                Console.WriteLine($"[Info] Started at: {DateTime.Now}");
            }

            if (isWorldServer)
            {
                Console.WriteLine($"[Start] World Server has been started successfully");
                Console.WriteLine($"[Info] Started at: {DateTime.Now}");
            }
            ;
        }
Exemplo n.º 4
0
        public Server(ILog logger, string ipAddress, int port)
        {
            _logger = logger;
            Port    = port;
            Host    = ipAddress;

            _clients      = new Dictionary <Guid, IInternalClient>();
            PacketService = new TCPServerPacketService();
            BanIps        = new List <string>();
            BanUsers      = new List <string>();

            BuildBanList();

            try
            {
                _logger.Info("Start ManageServer at {0}:{1}...", Category.System, Host, Port);
                _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(Host, Port));

                _server.ClientConnected += OnConnected;
            }
            catch (Exception ex)
            {
                _logger?.Exception(ex, "Start ManagementServer");
            }
        }
 /// <summary>
 /// Creates a new ScsServiceApplication object.
 /// </summary>
 /// <param name="scsServer">Underlying IScsServer object to accept and manage client connections</param>
 /// <exception cref="ArgumentNullException">
 /// Throws ArgumentNullException if scsServer argument is null
 /// </exception>
 public ScsServiceApplication(IScsServer scsServer)
 {
     _scsServer = scsServer ?? throw new ArgumentNullException(nameof(scsServer));
     _scsServer.ClientConnected    += ScsServer_ClientConnected;
     _scsServer.ClientDisconnected += ScsServer_ClientDisconnected;
     _serviceObjects = new ConcurrentDictionary <string, ServiceObject>();
     _serviceClients = new ConcurrentDictionary <long, IScsServiceClient>();
 }
 /// <summary>
 /// Creates a new ScsServiceApplication object.
 /// </summary>
 /// <param name="scsServer">Underlying IScsServer object to accept and manage client connections</param>
 /// <exception cref="ArgumentNullException">
 /// Throws ArgumentNullException if scsServer argument is null
 /// </exception>
 public ScsServiceApplication(IScsServer scsServer)
 {
     _scsServer = scsServer ?? throw new ArgumentNullException(nameof(scsServer));
     _scsServer.ClientConnected    += ScsServer_ClientConnected;
     _scsServer.ClientDisconnected += ScsServer_ClientDisconnected;
     _serviceObjects = new ThreadSafeSortedList <string, ServiceObject>();
     _serviceClients = new ThreadSafeSortedList <long, IScsServiceClient>();
 }
Exemplo n.º 7
0
        public void BeginListening()
        {
            this.server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(this.BindAddress, this.BinPort));
            this.server.Start();

            this.server.ClientConnected    += onClientConnected;
            this.server.ClientDisconnected += onClientDisconnected;
        }
Exemplo n.º 8
0
        public void BeginListening()
        {
            Log.Info("Start OuterServer at {0}:{1}...", BindAddress, BindPort);
            OuterServer = ScsServerFactory.CreateServer(new ScsTcpEndPoint(BindAddress, BindPort));
            OuterServer.Start();

            OuterServer.ClientConnected    += OnConnected;
            OuterServer.ClientDisconnected += OnDisconnected;
        }
Exemplo n.º 9
0
        public NetListener()
        {
            Log.Info("Start TcpServer at {0}:{1}...", ConfigManager.Network.BindIp, ConfigManager.Network.BindPort);
            Server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(ConfigManager.Network.BindIp, ConfigManager.Network.BindPort));
            Server.Start();

            Server.ClientConnected += OnConnected;
            Server.ClientDisconnected += OnDisconnected;
        }
Exemplo n.º 10
0
        public void BeginListening()
        {
            Logger.WriteLine(LogState.Info, "GameServer Listening on: {0}:{1}...", BindAddress, BindPort);
            Server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(BindAddress, BindPort));
            Server.Start();

            Server.ClientConnected    += OnConnected;
            Server.ClientDisconnected += OnDisconnected;
        }
Exemplo n.º 11
0
        public void BeginListening()
        {
            Log.Info("Start OuterServer at {0}:{1}...", BindAddress, BindPort);
            OuterServer = ScsServerFactory.CreateServer(new ScsTcpEndPoint(BindAddress, BindPort));
            OuterServer.Start();

            OuterServer.ClientConnected += OnConnected;
            OuterServer.ClientDisconnected += OnDisconnected;
        }
Exemplo n.º 12
0
        public void BeginListening()
        {
            Logger.WriteLine(LogState.Info,"GameServer Listening on: {0}:{1}...", BindAddress, BindPort);
            Server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(BindAddress, BindPort));
            Server.Start();

            Server.ClientConnected += OnConnected;
            Server.ClientDisconnected += OnDisconnected;
        }
Exemplo n.º 13
0
        public void BeginListening()
        {
            Server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(BindAddress, BindPort));

            Server.WireProtocolFactory = new KeyProtocolFactory();
            Server.ClientConnected    += Server_ClientConnected;

            Server.Start();
            Logger.WriteLine(LogState.Info, "LoginServer Listening on: " + BindAddress + ":" + BindPort);
        }
Exemplo n.º 14
0
        /// <summary>
        ///
        /// </summary>
        private void StopServer()
        {
            scsServer.ClientConnected    -= ServerClientConnected;
            scsServer.ClientDisconnected -= ServerClientDisconnected;

            scsServer.Stop();
            scsServer = null;

            Start.LargeGlyph = new BitmapImage(new Uri("Images/Start.png", UriKind.Relative));
        }
Exemplo n.º 15
0
 public void SendMessageToAllClients(IScsServer server, string message)
 {
     foreach (var clients in server.Clients.GetAllItems())
     {
         if (clients != null && clients.CommunicationState == CommunicationStates.Connected)
         {
             clients.SendMessage(new ScsTextMessage(message));
         }
     }
 }
Exemplo n.º 16
0
        public void Init(System.Xml.XmlElement handlerElement)
        {
            _shutdownEvent = new ManualResetEvent(false);

            _port = Convert.ToInt32(handlerElement["Port"].InnerText);

            serverClient = Hik.Communication.Scs.Server.ScsServerFactory.CreateServer(new ScsTcpEndPoint(_port));
            serverClient.WireProtocolFactory = new Protocols.GallileoWireProtocolFactory();
            serverClient.ClientConnected += new EventHandler<ServerClientEventArgs>(ClientConnected);
            serverClient.ClientDisconnected += new EventHandler<ServerClientEventArgs>(ClientDisconnected);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Create TCP server by ScsServerFactory in Scs
        /// </summary>
        /// <param name="ip">ip address</param>
        /// <param name="port">port number</param>
        public void CreateServer(string ip, int port)
        {
            _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(ip, port));

            // Registered events for server when client connected and disconnected
            _server.ClientConnected    += _server_ClientConnected;
            _server.ClientDisconnected += _server_ClientDisconnected;

            // log
            log.Info("Creating Server successfully");
        }
Exemplo n.º 18
0
        /// <summary>
        ///
        /// </summary>
        private void StartServer()
        {
            scsServer = ScsServerFactory.CreateServer(new ScsTcpEndPoint(serverPort));

            scsServer.ClientConnected    += ServerClientConnected;
            scsServer.ClientDisconnected += ServerClientDisconnected;

            scsServer.Start();

            Start.LargeGlyph = new BitmapImage(new Uri("Images/Stop.png", UriKind.Relative));
        }
Exemplo n.º 19
0
 /// <summary>
 /// Creates a new ScsServiceApplication object.
 ///
 /// </summary>
 /// <param name="scsServer">Underlying IScsServer object to accept and manage client connections</param><exception cref="T:System.ArgumentNullException">Throws ArgumentNullException if scsServer argument is null</exception>
 public ScsServiceApplication(IScsServer scsServer)
 {
     if (scsServer == null)
     {
         throw new ArgumentNullException("scsServer");
     }
     this._scsServer = scsServer;
     this._scsServer.ClientConnected    += new EventHandler <ServerClientEventArgs>(this.ScsServer_ClientConnected);
     this._scsServer.ClientDisconnected += new EventHandler <ServerClientEventArgs>(this.ScsServer_ClientDisconnected);
     this._serviceObjects = new ThreadSafeSortedList <string, ScsServiceApplication.ServiceObject>();
     this._serviceClients = new ThreadSafeSortedList <long, IScsServiceClient>();
 }
Exemplo n.º 20
0
        public void StartListening()
        {
            //Create a server that listens 8000 TCP port for incoming connections
            _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(Config.ServerIpAddress, Config.ServerPort));
            _server.WireProtocolFactory = new BankProtocolFactory();
            //Register events of the server to be informed about clients
            _server.ClientConnected += Server_ClientConnected;
            _server.Start(); //Start the server

            _log.Info(String.Format("Bank Simulator Listening at: ip {0} : port {1}", Config.ServerIpAddress, Config.ServerPort));
            _log.Info("Bank Simulator Running...");
        }
Exemplo n.º 21
0
        /// <summary>
        /// Creates a new ScsServiceApplication object.
        /// </summary>
        /// <param name="scsServer">Underlying IScsServer object to accept and manage client connections</param>
        /// <exception cref="ArgumentNullException">Throws ArgumentNullException if scsServer argument is null</exception>
        public ScsServiceApplication(IScsServer scsServer)
        {
            if (scsServer == null)
            {
                throw new ArgumentNullException("scsServer");
            }

            _scsServer = scsServer;
            _scsServer.ClientConnected    += ScsServer_ClientConnected;
            _scsServer.ClientDisconnected += ScsServer_ClientDisconnected;
            _serviceObjects = new ThreadSafeSortedList <string, ServiceObject>();
            _serviceClients = new ThreadSafeSortedList <string, IScsServiceClient>();
        }
Exemplo n.º 22
0
 public static void StartServer(int listeningPort)
 {
     if (!IsServerStarted)
     {
         // Создаем сервер, слушаем порт
         server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(listeningPort));
         //Register events of the server to be informed about clients
         server.ClientConnected    += Server_ClientConnected;
         server.ClientDisconnected += Server_ClientDisconnected;
         server?.Start();                 //Start the server
         IsServerStarted = true;
     }
 }
Exemplo n.º 23
0
        public void StartListening(string ip, int port)
        {
            //Create a server that listens 8000 TCP port for incoming connections
            _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(ip, port));
            _server.WireProtocolFactory = new AtmProtocolFactory();
            //Register events of the server to be informed about clients
            _server.ClientConnected    += Server_ClientConnected;
            _server.ClientDisconnected += Server_ClientDisconnected;
            _server.Start(); //Start the server

            _log.Info(String.Format("Server Triton Node Sevice Listening at: ip {0} : port {1}", ip, port));
            _log.Info("Switchlink.Switch.Service => Triton Node Sevice Running...");
        }
Exemplo n.º 24
0
        public void Start()
        {
            //check CallInChannel client
            ThreadPool.QueueUserWorkItem(new WaitCallback(CheckConnectedStatus_Thread), SysParameters.SharkHandsInterval);

            //Create a server that listens gParam.sLocalPort TCP port for incoming connections
            ScsServer = ScsServerFactory.CreateServer(new ScsTcpEndPoint(ServerPort));

            //Register events of the server to be informed about clients
            ScsServer.ClientConnected    += Server_ClientConnected;
            ScsServer.ClientDisconnected += Server_ClientDisconnected;
            //Start the server
            ScsServer.Start();
        }
Exemplo n.º 25
0
        public void Start()
        {
            //check upload client
            CheckConnectedStatusThread = new Thread(CheckConnectedStatus_Thread);
            CheckConnectedStatusThread.Start(Controller.GetInstance().Args.args.SharkHandsInterval);

            //Create a server that listens gParam.sLocalPort TCP port for incoming connections
            server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(UploadServerPort));

            //Register events of the server to be informed about clients
            server.ClientConnected    += Server_ClientConnected;
            server.ClientDisconnected += Server_ClientDisconnected;
            //Start the server
            server.Start();
        }
Exemplo n.º 26
0
        public ServerReceiver(IScsServer server)
        {
            this._server = server;

            _commands = new List <ICommand>
            {
                new LoginCommand(),
                new RegisterCommand(),
                new DisconnectCommand(),
                new AfterLoginData(),
                new JoinRoom(),
                new SendMessageChatCommand(server),
                new JoinQueueCommand(),
            };
        }
Exemplo n.º 27
0
        public void Dispose()
        {
            try
            {
                stop_1s_timer();

                _sclients.Clear();

                if (_server != null)
                {
                    _server.Stop();
                    _server = null;
                }
            }
            catch { }
        }
Exemplo n.º 28
0
        protected Server(ushort port, Logger logger, IDatabase database)
        {
            if (logger == null || database == null)
            {
                throw new Exception("logger == null || database == null");
            }

            Port     = port;
            Logger   = logger;
            Database = database;

            _scsServer = ScsServerFactory.CreateServer(new ScsTcpEndPoint(port));
            _scsServer.WireProtocolFactory = new TWireProtocolFactory();
            _scsServer.ClientConnected    += Internal_ClientConnected;
            _scsServer.ClientDisconnected += (s, e) => ClientDisconnected((NetworkClient)e.Client.Tag);
        }
Exemplo n.º 29
0
        public void Start()
        {
            _config   = ServerConfig.LoadConfig();
            _receiver = new ServerReceiver(_server);
            _server   = ScsServerFactory.CreateServer(new ScsTcpEndPoint(_config.Ip, _config.Port));

            new ServerLogic(_receiver, _server);

            _server.ClientConnected += Client_Connected;

            _server.Start();


            Console.WriteLine("Enter something to close server");
            Console.ReadLine();
            _server.Stop();
        }
Exemplo n.º 30
0
        public void Start()
        {
            mId          = Config.User.Id;
            mServiceName = Config.User.ServiceName;
            mPort        = Config.User.Port;

            foreach (var server in Config.User.Servers)
            {
                try
                {
                    using (var b = ScsClientFactory.CreateClient(new ScsTcpEndPoint(server.Ip, server.Port)))
                    {
                        b.Connected       += ServerOnConnected;
                        b.Disconnected    += ServerOnDisconnected;
                        b.MessageReceived += ServerOnMessageReceived;

                        b.ConnectTimeout = 2000;
                        b.Connect();
                        mBackEnds.Add(b);

                        mReConnecters.Add(new ClientReConnecter(b));
                    }
                }
                catch (Exception ex)
                {
                    Logger.FatalException("Server " + server.ServiceName + " at " + server.Ip + ":" + server.Port + " can not reached.", ex);
                    return;
                }
            }

            try
            {
                mFrontEndServer = ScsServerFactory.CreateServer(new ScsTcpEndPoint(mPort));
                mFrontEndServer.WireProtocolFactory = new ProtobufSerializationProtocolFactory();

                mFrontEndServer.ClientConnected    += ClientConnected;
                mFrontEndServer.ClientDisconnected += ClientDisconnected;

                mFrontEndServer.Start();
            }
            catch (Exception ex)
            {
                Logger.FatalException("Server start failed.", ex);
            }
        }
Exemplo n.º 31
0
        private void svr_uc_Load(object sender, EventArgs e)
        {
            var parser = new FileIniDataParser();

            data   = parser.ReadFile("app_set.ini");
            server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(int.Parse(data["NETWORK"]["MULTI_PORT"])));

            server.ClientConnected    += Server_ClientConnected;
            server.ClientDisconnected += Server_ClientDisconnected;
            restart_pc.Elapsed        += Restart_pc_Elapsed;
            check_task.Elapsed        += Check_task_Elapsed;
            get_csv.Elapsed           += Get_csv_Elapsed;
            get_log.Elapsed           += Get_log_Elapsed;

            get_csv.Enabled = true;
            get_log.Enabled = true;

            Rectangle rect = dgv_svr.GetCellDisplayRectangle(0, -1, true);

            // set checkbox header to center of header cell. +1 pixel to position correctly.
            rect.X      = rect.Location.X + 8;
            rect.Y      = rect.Location.Y + 10;
            rect.Width  = rect.Size.Width;
            rect.Height = rect.Size.Height;


            checkboxHeader.Name            = "checkboxHeader";
            checkboxHeader.Size            = new Size(15, 15);
            checkboxHeader.Location        = rect.Location;
            checkboxHeader.CheckedChanged += new EventHandler(checkboxHeader_CheckedChanged);
            dgv_svr.Controls.Add(checkboxHeader);


            if (Boolean.Parse(data["COPY"]["COPY_RD"]))
            {
                check_task.Enabled = true;
            }
            if (Boolean.Parse(data["PC"]["RESTART"]))
            {
                restart_pc.Enabled = true;
            }

            ConnectToServer();
        }
        /// <summary>
        /// 实例化ServerStatusService
        /// </summary>
        /// <param name="server"></param>
        /// <param name="container"></param>
        /// <param name="config"></param>
        public ServerStatusService(IScsServer server, CastleServiceConfiguration config, IServiceContainer container)
        {
            this.config = config;
            this.server = server;
            this.container = container;
            this.startTime = DateTime.Now;
            this.statuslist = new TimeStatusCollection(config.RecordHours * 3600);
            this.counterlist = new CounterInfoCollection(config.MinuteCalls);

            //启动定义推送线程
            var threadPush = new Thread(DoPushWork);
            threadPush.IsBackground = true;
            threadPush.Start();

            //启动自动检测线程
            var threadCheck = new Thread(DoCheckWork);
            threadCheck.IsBackground = true;
            threadCheck.Start();
        }
Exemplo n.º 33
0
        static void Main(string[] args)
        {
            IScsServer server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(LISTENING_PORT));

            server.WireProtocolFactory = new MyWireProtocolFactory();
            server.ClientConnected    += Server_ClientConnected;
            server.ClientDisconnected += Server_ClientDisconnected;

            server.Start(); //Start the server

            Console.WriteLine("Server is started successfully. Press enter to stop...");
            Console.ReadLine(); //Wait user to press enter

            // Disconnect all connected client
            foreach (IScsServerClient client in server.Clients.GetAllItems())
            {
                client.Disconnect();
            }
            server.Stop(); //Stop the server
        }
Exemplo n.º 34
0
        public ServerLogic(ServerReceiver receiver, IScsServer server)
        {
            _server = server;

            using (var reader = SqlHelper.ExecuteDataReader("SELECT * FROM Room"))
                while (reader.Read())
                {
                    var id          = Convert.ToInt32(reader["Id"].ToString());
                    var name        = reader["Name"].ToString();
                    var host        = reader["Host"].ToString();
                    var image       = reader["ImageUrl"].ToString();
                    var description = reader["Description"].ToString();
                    DataSingleton.Instance.Rooms[roomCount]            = new Room(id, name, host, image, description);
                    DataSingleton.Instance.Rooms[roomCount].InsideInfo = new Room.InsindeInfo(new List <UserClient>(),
                                                                                              new List <Dj>(), DataSingleton.Instance.Rooms[roomCount]);
                    roomCount++;
                }

            PeriodicTask.StartNew(1000, TrackRefresh);
        }
Exemplo n.º 35
0
        public NetworkManager(string ipAddress, int port, Type packetHandler, Type fallbackEncryptor, bool isWorldServer) : base(packetHandler, isWorldServer)
        {
            _encryptor = (EncryptorT)Activator.CreateInstance(typeof(EncryptorT));

            if (fallbackEncryptor != null)
            {
                _fallbackEncryptor = (EncryptionBase)Activator.CreateInstance(fallbackEncryptor);
            }

            _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(ipAddress, port));

            // Register events of the server to be informed about clients
            _server.ClientConnected    += OnServerClientConnected;
            _server.ClientDisconnected += OnServerClientDisconnected;
            _server.WireProtocolFactory = new WireProtocolFactory <EncryptorT>();

            // Start the server
            _server.Start();

            Logger.Log.Info(Language.Instance.GetMessageFromKey("STARTED"));
        }
Exemplo n.º 36
0
 private StaticNode(int port)
 {
     _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(port));
     _server.ClientConnected += (s, e) => e.Client.MessageReceived += Client_MessageReceived;
 }
Exemplo n.º 37
0
        /// <summary>
        /// 实例化CastleService
        /// </summary>
        /// <param name="config"></param>
        public CastleService(CastleServiceConfiguration config)
        {
            this.config = config;

            if (string.Compare(config.Host, "any", true) == 0)
            {
                config.Host = IPAddress.Loopback.ToString();
                epServer = new ScsTcpEndPoint(config.Port);
            }
            else
                epServer = new ScsTcpEndPoint(config.Host, config.Port);

            this.server = ScsServerFactory.CreateServer(epServer);
            this.server.ClientConnected += server_ClientConnected;
            this.server.ClientDisconnected += server_ClientDisconnected;
            this.server.WireProtocolFactory = new CustomWireProtocolFactory(config.Compress, config.Encrypt);

            //服务端注入内存处理
            this.container = new SimpleServiceContainer(CastleFactoryType.Local);
            this.container.OnError += error => { if (OnError != null) OnError(error); };
            this.container.OnLog += (log, type) => { if (OnLog != null) OnLog(log, type); };

            //实例化SmartThreadPool
            var stp = new STPStartInfo
            {
                IdleTimeout = config.Timeout * 1000,
                MaxWorkerThreads = Math.Max(config.MaxCalls, 10),
                MinWorkerThreads = 5,
                ThreadPriority = ThreadPriority.Normal,
                WorkItemPriority = WorkItemPriority.Normal
            };

            //创建线程池
            smart = new SmartThreadPool(stp);
            smart.Start();

            //创建并发任务组
            var group = smart.CreateWorkItemsGroup(2);
            group.Start();

            //实例化调用者
            var status = new ServerStatusService(server, config, container);
            this.caller = new ServiceCaller(group, status);

            //判断是否启用httpServer
            if (config.HttpEnabled)
            {
                //设置默认的解析器
                IHttpApiResolver resolver = new DefaultApiResolver();

                //判断是否配置了HttpType
                if (config.HttpType != null && typeof(IHttpApiResolver).IsAssignableFrom(config.HttpType))
                {
                    resolver = Activator.CreateInstance(config.HttpType) as IHttpApiResolver;
                }

                var httpCaller = new HttpServiceCaller(group, config, container);

                //刷新服务委托
                status.OnRefresh += () => httpCaller.InitCaller(resolver);

                //初始化调用器
                httpCaller.InitCaller(resolver);

                var handler = new HttpServiceHandler(httpCaller);
                var factory = new HttpRequestHandlerFactory(handler);
                this.httpServer = new HTTPServer(factory, config.HttpPort);
            }

            //绑定事件
            MessageCenter.Instance.OnError += Instance_OnError;
        }
Exemplo n.º 38
0
        public void BeginListening()
        {
            Server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(BindAddress, BindPort));

            Server.WireProtocolFactory = new KeyProtocolFactory();
            Server.ClientConnected += Server_ClientConnected;

            Server.Start();
            Logger.WriteLine(LogState.Info, "LoginServer Listening on: " + BindAddress + ":" + BindPort);
        }
Exemplo n.º 39
0
        public bool Start()
        {
            try
            {
                if (_server == null)
                {
                    _server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(this.ListenPort));
                    _server.WireProtocolFactory = new EzWireProtocolFactory();
                    _server.ClientConnected += server_ClientConnected;
                    _server.ClientDisconnected += server_ClientDisconnected;
                    _server.Start();

                    if (this.ActiveCheckClientAvailable)
                        start_1s_timer();
                }
                return true;
            }
            catch (Exception ex)
            {
                EzLogger.GlobalLogger.warning(string.Format("{0}{2}{1}{2}",
                    ex.Message, ex.StackTrace, Environment.NewLine));

                Dispose();

                return false;
            }
        }
Exemplo n.º 40
0
        public void Dispose()
        {
            try
            {
                stop_1s_timer();

                _sclients.Clear();

                if (_server != null)
                {
                    _server.Stop();
                    _server = null;
                }
            }
            catch { }
        }