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); }
public void Dispose() { DynamicCommandManager.Dispose(); if (IsRunning) { Stop(); } DatabaseManager.Dispose(); _clientOnlineChecker?.Dispose(); }
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); }
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); }
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; }