//Обработка отключения пользователя public void Disconnect(ChatUser User) { //Определение подключения ICallbackMessage Connection = ConnectedUsers.FirstOrDefault(x => x.Value.Name == User.Name).Key; Console.WriteLine(User.Name + " trying to disconnect!"); //Если подкючение найдено if (Connection != null) { //Удаление текущего пользователя из списка подключенных ConnectedUsers.Remove(Connection); Console.WriteLine(User.Name + " disconnected!"); //Обновление списка подключенных у всех пользователей foreach (ICallbackMessage u in ConnectedUsers.Keys) { u.UpdateConnected(ConnectedUsers.Values.ToArray()); } return; } else { Console.WriteLine(User.Name + " connection not found!"); return; } }
// TODO: logging public static async Task Ban(SausageConnection user) { try { if (!(user.Socket.Connected || MainSocket.Connected)) { return; } // user exists if (ConnectedUsers.Any(x => x.UserInfo.Guid == user.UserInfo.Guid)) { Blacklisted.Add(user.Ip.Address); PacketFormat packet = new PacketFormat(PacketOption.UserBanned) { Guid = user.UserInfo.Guid, Content = "Place-holder reason" }; Log(packet); await Task.Delay(1000); // delay for waiting on the client to recieve a message user.Disconnect(); UiCtx.Send(x => ConnectedUsers.Remove(user)); } else { MessageBox.Show("User not found", "Ban result"); } } catch (ArgumentNullException e) { MessageBox.Show($"User returned null {e}", "Exception Caught"); } }
public void RemoveUser(User user) { if (ConnectedUsers.Contains(user)) { ConnectedUsers.Remove(user); AddMessage($"{user.Name} left the chat", ChatMessage.ChatMessageTypes.META); } }
public void RemoveUser(string user, string reason) { if (UserExists(user)) { Send(user, "close", reason); ConnectedUsers[user].Connected = false; ConnectedUsers.Remove(user); } }
private void ChannelOnUserLeft(object sender, IrcChannelUserEventArgs e) { ExecuteOnUiThread(() => { var vm = ConnectedUsers.FirstOrDefault(vmu => vmu.User == e.ChannelUser.User); if (vm != null) { ConnectedUsers.Remove(vm); } }); }
public override void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo) { NebulaUser user = GetUser(peer.Id); if (user != null) { ConnectedUsers.Remove(user.Id); } UserDisconnected?.Invoke(this, new UserDisconnectedEventArgs(user, disconnectInfo)); WriteLine($"Client Disconnected '{peer.EndPoint.Address}:{peer.EndPoint.Port}'. Reason: {disconnectInfo.Reason} ({disconnectInfo.SocketErrorCode})", ConsoleColor.Red); }
public override Task OnDisconnectedAsync(Exception exception) { var user = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId); if (user == null) { return(base.OnDisconnectedAsync(exception)); } ConnectedUsers.Remove(user); return(base.OnDisconnectedAsync(exception)); }
private void ConnectedUsersOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.NewItems is IList <UserInfoBoxViewModel> newViewModels) { foreach (var userVm in newViewModels) { userVm.User.Quit += (o, args) => { ExecuteOnUiThread(() => ConnectedUsers.Remove(userVm)); }; } } }
public override Task OnDisconnectedAsync(Exception exception) { var user = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId); if (user == null) { return(base.OnDisconnectedAsync(exception)); } Clients.All.SendAsync(ChatHubMethods.UserNotAvailable, user.UserId); ConnectedUsers.Remove(user); return(base.OnDisconnectedAsync(exception)); }
public HostServerViewModel(INetworkInteractionFactory networkInteractionFactory, IEventAggregator eventAggregator, INetworkService networkService, IPlayServerService playServerService) { _networkInteractionFactory = networkInteractionFactory; _eventAggregator = eventAggregator; _networkService = networkService; _playServerService = playServerService; playServerService.ClientConnected += (sender, e) => ConnectedUsers.Add(e.Address); playServerService.ClientDisconnected += (sender, e) => ConnectedUsers.Remove(e.Address); Task.Run(async() => await networkService.ConfigureMachineForHosting().ContinueWith(task => { HostAddress = new NetworkAddress(networkService.ExternalIp, networkService.Port); IsLoading = false; })); }
private void ClientUnSubscribed(User user) { try { this._currentDispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => { if (ConnectedUsers.Contains(user)) { ConnectedUsers.Remove(user); ConnectedUsersCount--; } })); } catch (Exception exception) { Logger.Error(exception, OType.FullName, "ClientUnSubscribed"); } }
public override async Task OnDisconnectedAsync(Exception exception) { var c = ConnectedUsers.FirstOrDefault(u => u.ID == Context.ConnectionId); c.Room.ReadyUsers.Remove(c); c.Room.WaitingUsers.Remove(c); if ((c.Room.WaitingUsers.Count + c.Room.ReadyUsers.Count) == 0) { OnlineRooms.Remove(c.Room); } Game(); await Clients.Group(c.Room.Name).SendAsync("updateUsers", c.Room.WaitingUsers.Count, c.Room.WaitingUsers.Select(u => u.Usuario)); await Clients.Group(c.Room.Name).SendAsync("updateReadyUsers", c.Room.WaitingUsers.Count + c.Room.ReadyUsers.Count, c.Room.ReadyUsers.Count, c.Room.ReadyUsers.Select(u => u.Usuario), c.Room.game); await Clients.Caller.SendAsync("close"); ConnectedUsers.Remove(c); }
private void E_ReceivedMsg(object sender, string e) { if (e.StartsWith("@quit")) { var client = sender as ClientHandler; ConnectedUsers.Remove(client.Username); // remove username } else { App.Current.Dispatcher.Invoke(() => { var client = sender as ClientHandler; ReceivedMsg.Add(client.Username + ":" + e); RaisePropertyChanged(nameof(CountMsg)); if (!ConnectedUsers.Contains(client.Username)) { ConnectedUsers.Add(client.Username); } }); } }
/// <summary> /// Initializes a new instance of the <see cref="BindableChannel"/> class. /// </summary> /// <param name="model">API Channel Model.</param> /// <param name="guildId">Id of Channel's guild.</param> /// <param name="states">List of VoiceStates for users in a voice channel.</param> public BindableChannel([NotNull] Channel model, [CanBeNull] IEnumerable<VoiceState> states = null) : base(model) { MessengerInstance.Register<GatewayUserGuildSettingsUpdatedMessage>(this, m => { if ((m.Settings.GuildId ?? "DM") == GuildId) { DispatcherHelper.CheckBeginInvokeOnUi(() => { // Updated channel settings ChannelOverride channelOverride = ChannelsService.GetChannelSettings(Model.Id); if (channelOverride != null) { Muted = channelOverride.Muted; } }); } }); MessengerInstance.Register<SettingChangedMessage<bool>>(this, m => { if (m.Key == SettingKeys.ShowNoPermssions) { RaisePropertyChanged(nameof(Hidden)); } }); MessengerInstance.Register<SettingChangedMessage<CollapseOverride>>(this, m => { if (m.Key == SettingKeys.CollapseOverride) { RaisePropertyChanged(nameof(Hidden)); } }); MessengerInstance.Register<SpeakMessage>(this, e => { if (e.EventData.UserId != null && ConnectedUsers.ContainsKey(e.EventData.UserId)) { DispatcherHelper.CheckBeginInvokeOnUi(() => { ConnectedUsers[e.EventData.UserId].Speaking = e.EventData.Speaking > 0; }); } }); MessengerInstance.Register<GatewayVoiceStateUpdateMessage>(this, m => { DispatcherHelper.CheckBeginInvokeOnUi(() => { if (m.VoiceState.ChannelId == Model.Id) { if (ConnectedUsers.ContainsKey(m.VoiceState.UserId)) { ConnectedUsers[m.VoiceState.UserId].Model = m.VoiceState; ConnectedUsers[m.VoiceState.UserId].UpateProperties(); } else { ConnectedUsers.Add(m.VoiceState.UserId, new BindableVoiceUser(m.VoiceState)); } } else if (ConnectedUsers.ContainsKey(m.VoiceState.UserId)) { ConnectedUsers.Remove(m.VoiceState.UserId); } }); }); if (states != null) { foreach (var state in states) { if (state.ChannelId == Model.Id) { state.GuildId = GuildId; ConnectedUsers.Add(state.UserId, new BindableVoiceUser(state)); } } } }
protected internal virtual void OnClientDisconnected(TUser user) { ConnectedUsers.Remove(user); }
public void Disconnect(int userid) { ConnectedUsers.Remove(userid); HasMarkedUnRead = false; }
public void RemoveConectedUser(string connectionId) { var usertoremove = ConnectedUsers.Find(x => x.ConnectionID == connectionId); ConnectedUsers.Remove(usertoremove); }
void WorkerOnProgressChanged(object sender, ProgressChangedEventArgs e) { Message message = e.UserState as Message; if (message != null) { switch (message.Type) { case Message.MessageType.Connect: { if (message.Username.Equals(Username)) { ChatMessages += String.Format("({1}) Welcome, {0}!\n", Username, message.MessageCreationTime.ToString("G")); IsConnected = true; } else { ConnectedUsers.Add(message.Username); ChatMessages += String.Format("({1}) {0} has joined the server.\n", message.Username, message.MessageCreationTime.ToString("G")); } break; } case Message.MessageType.Disconnect: { if (!message.Username.Equals(Username)) { ConnectedUsers.Remove(message.Username); ChatMessages += String.Format("({1}) {0} has left the server.\n", message.Username, message.MessageCreationTime.ToString("G")); } break; } case Message.MessageType.ChatMessage: { if (message.Username != Username && !ConnectedUsers.Contains(message.Username)) { ConnectedUsers.Add(message.Username); } ChatMessages += String.Format("({1}) {2}: {0} \n", message.ChatMessage, message.MessageCreationTime.ToString("G"), message.Username); break; } case Message.MessageType.UsernameAlreadyTaken: { ChatMessages += String.Format("({1}) Username {0} is already taken!\n", Username, message.MessageCreationTime.ToString("G")); _networkStream.Close(); _tcpClient.Close(); _tcpClient = new TcpClient(); _worker.CancelAsync(); break; } default: //do nothing break; } } }