コード例 #1
0
        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;
            }
        }
コード例 #2
0
 private void OnDisconnect(object sender, UserDisconnectEvent ude)
 {
     GetUser(ude.UserId, user => {
         if (user == null)
         {
             return;
         }
         if (user is IEventHandler ueh)
         {
             ueh.HandleEvent(sender, ude);
         }
     });
 }
コード例 #3
0
 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);
         }
     }
 }
コード例 #4
0
 public UserDisconnectPacket(UserDisconnectEvent disconnect, IUser user)
 {
     Disconnect = disconnect ?? throw new ArgumentNullException(nameof(disconnect));
     User       = user ?? throw new ArgumentNullException(nameof(user));
 }