コード例 #1
0
        private void ClientOnReceivedStaticCommandResult(object sender, DynamicCommandEvent dynamicCommandEvent)
        {
            var client = (Client)sender;

            DynamicCommandManager.ReceivedResult(dynamicCommandEvent, client);
            Logger.Debug("Received dynamic command result ({0}) from client CI-{1}", dynamicCommandEvent.Status, client.Id);
        }
コード例 #2
0
        public void Dispose()
        {
            DynamicCommandManager.Dispose();

            if (IsRunning)
            {
                Stop();
            }

            DatabaseManager.Dispose();
            _clientOnlineChecker?.Dispose();
        }
コード例 #3
0
        private void ClientOnDisconnected(object sender, EventArgs e)
        {
            var client = (Client)sender;

            Logger.Debug("Notify administrations about the disconnect of CI-{0}", client.Id);
            lock (_administrationListLock)
                foreach (var administration in Administrations)
                {
                    administration.Value.NotifyClientDisconnected(client);
                }

            Clients.TryRemove(client.Id, out client);

            DynamicCommandManager.ClientDisconnected(client);

            ClientsChanged?.Invoke(this, EventArgs.Empty);
            DatabaseManager.SetLastSeen(client.Id);
        }
コード例 #4
0
        private void ClientConnected(Client client, bool isNewClient)
        {
            Clients.TryAdd(client.Id, client);

            Logger.Debug("Notify administrations about the connection of CI-{0}", client.Id);
            lock (_administrationListLock)
                foreach (var administration in Administrations)
                {
                    if (!isNewClient)
                    {
                        administration.Value.NotifyClientConnected(client);
                    }
                    else
                    {
                        administration.Value.NotifyNewClient(client);
                    }
                }

            ClientsChanged?.Invoke(this, EventArgs.Empty);
            DynamicCommandManager.OnClientJoin(client);
        }
コード例 #5
0
        public TcpServer(DatabaseManager databaseManager, List <IpAddressInfo> ipAddresses, X509Certificate2 certificate)
        {
            DatabaseManager = databaseManager;
            _certificate    = certificate;
            Listeners       = ipAddresses.Select(x => new Listener(IPAddress.Parse(x.Ip), x.Port)).ToList();
            Clients         = new ConcurrentDictionary <int, Client>();

            Administrations  = new SortedDictionary <ushort, Administration>();
            _clientAcceptors = new List <IClientAcceptor>
            {
                new ClientAcceptor0(databaseManager),
                new ClientAcceptor1(databaseManager),
                new ClientAcceptor2(databaseManager),
                new ClientAcceptor3(databaseManager),
                new ClientAcceptor4(databaseManager),
                new ClientAcceptor5(databaseManager)
            };
            DynamicCommandManager = new DynamicCommandManager(DatabaseManager, this);
            OnlineSince           = DateTime.UtcNow;
            PushManager           = new PushManager(databaseManager);
            _ip2LocationService   = new Ip2LocationService();
            _currentInstance      = this;
        }