예제 #1
0
        private void OnNotifyAvailableClientsRequest(IResonanceTransporter transporter, ResonanceMessage <NotifyAvailableClientsRequest> request)
        {
            InvokeUI(() =>
            {
                ConnectedClients.Clear();

                foreach (var client in request.Object.Clients)
                {
                    ConnectedClients.Add(client);
                }
            });
        }
        private void ConnectionStateChangedCallback(IEnumerable <string> connectedClients)
        {
            ConnectedClients.Clear();
            foreach (var connectedClient in connectedClients)
            {
                ConnectedClients.Add(new ListViewItemViewModel {
                    Text = string.Format("Client connected from IP: {0}", connectedClient)
                });
            }

            OnPropertyChanged("ConnectedClients");
        }
예제 #3
0
 private void StopServer()
 {
     if (!ServerStarted)
     {
         return;
     }
     Client = (Client.Name == settingsService.Name) ? Client : new ChatWCFService.Client(settingsService.Name);
     Port   = (Port == settingsService.Port) ? Port : settingsService.Port;
     ConnectedClients.Clear();
     hostService.Stop();
     ServerStarted = false;
     Notifications.Add(new Notification("Server stopped", DateTime.Now, NotificationType.ServerStopped));
 }
예제 #4
0
        public void PopulateClients()
        {
            ConnectedClients.Clear();

            var filter = Builders <ClientModel> .Filter.Gte(x => x.LastSeen, DateTime.Now.AddMinutes(-5));

            var onlineClients = Mongo.Get(filter).ToList();

            foreach (var c in onlineClients)
            {
                ConnectedClients.Add(c);
            }
        }
예제 #5
0
        public void Disconnect()
        {
            running = false;

            for (int i = 0; i < ConnectedClients.Count; i++)
            {
                Disconnect(ConnectedClients[i]);
            }

            ConnectedClients.Clear();

            server.Send("disconnect");
        }
예제 #6
0
        /// <summary>
        /// Stops the current WebRTC session, unregisters the listening service and stops the discovery
        /// </summary>
        private async void Disconnect()
        {
            if (IsConnected)
            {
                try
                {
                    Logger.LogInformation("Disconnecting...");

                    IsFree = false;

                    if (IsInSession)
                    {
                        await LeaveSession();
                    }

                    Logger.LogInformation("Closing listener service...");
                    await _service?.DisposeAsync();

                    Logger.LogInformation("Closing service discovery...");
                    await _discoveryClient?.DisposeAsync();

                    IsConnected = false;

                    InvokeUI(() =>
                    {
                        ConnectedClients.Clear();
                        SelectedClient = null;
                    });

                    Logger.LogInformation("Disconnected.");
                }
                catch (Exception ex)
                {
                    Logger.LogError(ex, ex.Message);
                }
                finally
                {
                    IsFree = true;
                }
            }
        }
예제 #7
0
        /// <summary>
        /// Disconnects all clients from server and disposes all associated system resources
        /// </summary>
        public void Disconnect()
        {
            if (ConnectedClients != null)
            {
                foreach (var client in ConnectedClients)
                {
                    if (client.Key.Socket != null && client.Key.Socket.Connected)
                    {
                        client.Key.Socket.Disconnect(false);
                        client.Value.Abort(); //close receiving thread
                    }
                }
                ConnectedClients.Clear();
            }

            if (ConnectedServer != null)
            {
                ConnectedServer.Socket.Disconnect(false);
                if (_clientListeningThread != null && _clientListeningThread.ThreadState != ThreadState.Stopped)
                {
                    _clientListeningThread.Abort();
                }
            }
        }
예제 #8
0
 private void StopConnBtnClicked()
 {
     server.StopConnection();
     ConnectedClients.Clear();
     Connected = false;
 }
예제 #9
0
 public void StopServer()
 {
     DataListener.Stop();
     ServerStatus = false;
     ConnectedClients.Clear();
 }