private void updatePresence(PresencePacket p) { if (p.connected) { ChatManager.Instance.UserConnected(p.name); } else { ChatManager.Instance.UserDisconnected(p.name); } }
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); } } }
//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 }); }
private void OnIncomingPresence(PresencePacket incomingPresencePacket) { Invoke(new PacketFactory.PacketReceivedDelegate(IncomingAsycPresenceThreadSafe), new object[] {incomingPresencePacket}); }
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); }
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)); }