Esempio n. 1
0
        private void StartButton_Click(object sender, EventArgs e)
        {
            var loggingDelegate          = new LoggingDelegate(AppendText);
            var userConnectedDelegate    = new UserConnectedDelegate(AppendUser);
            var userDisconnectedDelegate = new UserDisconnectedDelegate(RemoveUser);

            int.TryParse(portTextBox.Text, out var port);
            IPAddress.TryParse(ipAddressTextBox.Text, out var ip);

            if (port == default || ip == null)
            {
                var incorrectFields =
                    $"{(port == default ? "port, " : string.Empty)}{(ip == null ? "ip address" : string.Empty)}";

                MessageBox.Show($"Some fields are incorrect: {incorrectFields}");
            }
            else
            {
                _backgroundWorker.Start(ip, port, loggingDelegate, userConnectedDelegate, userDisconnectedDelegate);

                var startMessage = $"Server started at {ip}:{port} ...";
                _logger.Log(startMessage);
                AppendText(startMessage);

                portTextBox.Enabled       = false;
                ipAddressTextBox.Enabled  = false;
                comboBoxInterface.Enabled = false;
                startButton.Enabled       = false;
            }
        }
 public void Start(
     IPAddress address,
     int port,
     LoggingDelegate loggingDelegate,
     UserConnectedDelegate userConnectedDelegate,
     UserDisconnectedDelegate userDisconnectedDelegate)
 {
     _address                  = address;
     _port                     = port;
     _loggingDelegate          = loggingDelegate;
     _userConnectedDelegate    = userConnectedDelegate;
     _userDisconnectedDelegate = userDisconnectedDelegate;
     Task.Run(StartInternal);
 }
 public ClientConnection(
     TcpClient tcpClient,
     Logger logger,
     LoggingDelegate loggingDelegate,
     UserConnectedDelegate userConnectedDelegate,
     UserDisconnectedDelegate userDisconnectedDelegate,
     ConcurrentDictionary <string, ConcurrentQueue <Message> > notSentMessages,
     ConcurrentDictionary <string, bool> users)
 {
     _client                   = tcpClient;
     _logger                   = logger;
     _loggingDelegate          = loggingDelegate;
     _userConnectedDelegate    = userConnectedDelegate;
     _userDisconnectedDelegate = userDisconnectedDelegate;
     _notSentMessages          = notSentMessages;
     _users = users;
 }
Esempio n. 4
0
 private void RemoveUser(string nickname)
 {
     if (logTextBox.InvokeRequired)
     {
         var d = new UserDisconnectedDelegate(RemoveUser);
         userListBox.Invoke(d, new object[] { nickname });
     }
     else
     {
         for (var n = userListBox.Items.Count - 1; n >= 0; --n)
         {
             var removeListItem = nickname;
             if (userListBox.Items[n].ToString().Contains(removeListItem))
             {
                 userListBox.Items.RemoveAt(n);
             }
         }
     }
 }