public void ReceiveMessage(Message message) { switch (message.Type) { case MessageType.TextMessage: MessageIncomeEvent?.Invoke(message); break; case MessageType.ImageMessage: ImageMessageIncomeEvent?.Invoke(message); break; case MessageType.ConnectMessage: NewUserJoinedEvent?.Invoke(message.SenderUserName); if (message.SenderUserName != Name) { _channel.SendMessageToUser(message.SenderUserName, new Message() { SenderUserName = Name, Type = MessageType.IsOnlineMessage }); } break; case MessageType.DisconnectMessage: UserDisconnectEvent?.Invoke(message.SenderUserName); break; case MessageType.IsOnlineMessage: UserIsOnlineEvent?.Invoke(message.SenderUserName); break; } }
private void OnDisconnect(object sender, UserDisconnectEvent ude) { GetUser(ude.UserId, user => { if (user == null) { return; } if (user is IEventHandler ueh) { ueh.HandleEvent(sender, ude); } }); }
private void OnDisconnect(object sender, UserDisconnectEvent ude) { lock (Sync) { IUser user = GetUser(ude.User.UserId); if (user == null) { return; } if (user is IEventHandler ueh) { ueh.HandleEvent(sender, ude); } } }
public UserDisconnectPacket(UserDisconnectEvent disconnect, IUser user) { Disconnect = disconnect ?? throw new ArgumentNullException(nameof(disconnect)); User = user ?? throw new ArgumentNullException(nameof(user)); }