コード例 #1
0
 private void updatePresence(PresencePacket p)
 {
     if (p.connected)
     {
         ChatManager.Instance.UserConnected(p.name);
     }
     else
     {
         ChatManager.Instance.UserDisconnected(p.name);
     }
 }
コード例 #2
0
        public void disconnectClient(String token)
        {
            if (OnlineUsers.ContainsKey(token))
            {
                Client clientRemoved;
                OnlineUsers.TryRemove(token, out clientRemoved);
                Console.WriteLine("[UserManager] Client disconnected!");

                try
                {
                    PresencePacket p = new PresencePacket();
                    p.connected = false;
                    p.name      = getUsernameFromToken(token);
                    foreach (KeyValuePair <String, Client> entry in OnlineUsers)
                    {
                        entry.Value.SendPacket(p);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
コード例 #3
0
ファイル: ContactListForm.cs プロジェクト: weijunbao/chatapp
 //Handles _SessionManager.IncomingPresence
 //Event received from the SessionManager when a presence packet is received.
 //This could be a wide range of presence packet types.
 //Depending on the type a different action is performed.
 //The style of an item on the ContactList could be modified.
 //The user could be soliciting to subscribe to presence and a decision needs to be made by the user.
 //We may need to send off the current presence of the logged in user to a specific user.
 private void OnIncomingPresence(PresencePacket incomingPresencePacket)
 {
     //work performed in here should be done on the main GUI thread
     //since it will be updating the treeview
     this.Invoke(new Session.PacketReceivedDelegate(IncomingAsycPresenceThreadSafe), new object[] { incomingPresencePacket });
 }
コード例 #4
0
ファイル: MainWindow.cs プロジェクト: weijunbao/chatapp
 private void OnIncomingPresence(PresencePacket incomingPresencePacket)
 {
     Invoke(new PacketFactory.PacketReceivedDelegate(IncomingAsycPresenceThreadSafe),
            new object[] {incomingPresencePacket});
 }
コード例 #5
0
        private void getChannels(GetChannelPacket p, Client client)
        {
            GetChannelResponsePacket packet = new GetChannelResponsePacket();

            if (UserManager.Instance.isUserConnected(p.token))
            {
                String username = "";
                try
                {
                    username = UserManager.Instance.getUserFromToken(p.token).Username;
                }
                catch (Exception e) {
                    Console.WriteLine(e);
                    return;
                }


                String[] channels = new String[ChannelManager.Instance.getChannels().Count];
                int      size     = channels.Length;
                int      i        = 0;

                foreach (String chan in ChannelManager.Instance.getChannels())
                {
                    channels[size - 1 - i] = chan;
                    i++;
                }

                packet.channels = channels;
                packet.success  = true;
                packet.message  = "";

                UserManager.Instance.getUserFromToken(p.token).listeningChannels = true;

                PresencePacket myPresence = new PresencePacket();
                myPresence.name      = username;
                myPresence.connected = true;

                foreach (KeyValuePair <String, Client> entry in UserManager.Instance.OnlineUsers)
                {
                    try
                    {
                        User user = UserManager.Instance.getUserFromToken(entry.Key);
                        if (user.listeningChannels)
                        {
                            PresencePacket presence = new PresencePacket();
                            presence.name      = user.Username;
                            presence.connected = true;
                            client.SendPacket(presence);
                        }
                        if (!user.Username.Equals(username))
                        {
                            entry.Value.SendPacket(myPresence);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
            else
            {
                packet.success = false;
                packet.message = "You are not connected!";
            }

            client.SendPacket(packet);
        }
コード例 #6
0
ファイル: ChatRoomTabPage.cs プロジェクト: weijunbao/chatapp
 public void HandlePresence( PresencePacket p )
 {
     if ( p is OccupantAvailableResponse )
         HandleMUCPresence(WConvert.ToOccupantAvailableResponse(p));
     else if ( p is OccupantUnavailableResponse )
         HandleMUCUnavailable(WConvert.ToOccupantUnavailableResponse(p));
     else if ( p is UnavailableRequest )
         HandleUserLeftRoom(p.From);
     else if ( p is AvailableRequest )
         HandleGCPresence(WConvert.ToAvailableRequest(p));
     else if ( p is ErrorResponse )
         HandlePresenceError(WConvert.ToPresenceErrorResponsePacket(p));
 }