private void Connected(IPeer peer) { // Listen to messages peer.MessageReceived += OnMessageReceived; // Save the peer ConnectedPeers[peer.Id] = peer; // Create the security extension var extension = peer.AddExtension(new PeerSecurityExtension()); // Set default permission level extension.PermissionLevel = 0; // Create a unique peer guid extension.UniqueGuid = Guid.NewGuid(); PeersByGuidLookup[extension.UniqueGuid] = peer; // Invoke the event if (PeerConnected != null) { PeerConnected(peer); } OnPeerConnected(peer); }
private void OnPeerConnectedEventHandle(IPeer peer) { // Check if max number of connections has been reached if (maxConnections > 0 && connectedPeers.Count >= maxConnections) { peer.Disconnect("The max number of connections has been reached"); return; } logger.Debug($"Client {peer.Id} connected to server. Total clients are: {connectedPeers.Count + 1}"); // Listen to messages peer.OnMessageReceivedEvent += OnMessageReceived; // Save the peer connectedPeers[peer.Id] = peer; // Create the security extension var extension = peer.AddExtension(new SecurityInfoPeerExtension()); // Set default permission level extension.PermissionLevel = 0; // Create a unique peer guid extension.UniqueGuid = Guid.NewGuid(); peersByGuidLookup[extension.UniqueGuid] = peer; // Invoke the event OnPeerConnectedEvent?.Invoke(peer); OnPeerConnected(peer); }
protected virtual LobbyUserPeerExtension GetOrCreateLobbiesExtension(IPeer peer) { var extension = peer.GetExtension <LobbyUserPeerExtension>(); if (extension == null) { extension = new LobbyUserPeerExtension(peer); peer.AddExtension(extension); } return(extension); }
private void Connected(IPeer peer) { // Listen to messages peer.MessageReceived += OnMessageReceived; // Save the peer _connectedPeers[peer.Id] = peer; // Create the security extension var extension = peer.AddExtension(new PeerSecurityExtension()); // Set default permission level extension.PermissionLevel = 0; _logger.Info($"New Peer connected. ID: {peer.Id}"); // Invoke the event PeerConnected?.Invoke(peer); }
/// <summary> /// Removes existing chat user from all the channels, and creates a new /// <see cref="ChatUserPeerExtension"/> with new username. If <see cref="joinSameChannels"/> is true, /// user will be added to same channels /// </summary> /// <param name="peer"></param> /// <param name="newUsername"></param> /// <param name="joinSameChannels"></param> public void ChangeUsername(IPeer peer, string newUsername, bool joinSameChannels = true) { var chatUser = peer.GetExtension <ChatUserPeerExtension>(); if (chatUser == null) { return; } // Get previous chat user channels that one is connected to var prevChannels = chatUser.CurrentChannels.ToList(); // Get his default chat channel var defaultChannel = chatUser.DefaultChannel; // Remove the user from chat RemoveChatUser(chatUser); // Create a new chat user var newExtension = CreateChatUser(peer, newUsername); // Replace with new user peer.AddExtension(newExtension); if (joinSameChannels) { foreach (var prevChannel in prevChannels) { var channel = GetOrCreateChannel(prevChannel.Name); if (channel != null) { channel.AddUser(newExtension); } } if (defaultChannel != null && defaultChannel.Users.Contains(newExtension)) { // If we were added to the chat, which is now set as our default chat // It's safe to set the default channel newExtension.DefaultChannel = defaultChannel; } } }
/// <summary> /// Removes existing chat user from all the channels, and creates a new /// <see cref="ChatUserExtension" /> with new username. If <see cref="joinSameChannels" /> is true, /// user will be added to same channels /// </summary> /// <param name="peer"></param> /// <param name="newUsername"></param> /// <param name="joinSameChannels"></param> public void ChangeUsername(IPeer peer, string newUsername, bool joinSameChannels = true) { var chatExt = peer.GetExtension <ChatUserExtension>(); if (chatExt == null) { return; } var prevChannels = chatExt.CurrentChannels.ToList(); var defaultChannel = chatExt.DefaultChannel; // Remove the user from chat RemoveChatUser(chatExt); // Create a new chat user var newExtension = CreateChatUser(peer, newUsername); peer.AddExtension(newExtension); if (joinSameChannels) { foreach (var prevChannel in prevChannels) { var channel = GetOrCreateChannel(prevChannel.Name); if (channel != null) { channel.AddUser(newExtension); } } if (defaultChannel != null && defaultChannel.Users.Contains(newExtension)) { newExtension.DefaultChannel = defaultChannel; } } }
private void OnConnectedEventHandle(IPeer peer) { logger.Debug($"Client {peer.Id} connected to server. Total clients are: {connectedPeers.Count + 1}"); // Listen to messages peer.OnMessageReceivedEvent += OnMessageReceived; // Save the peer connectedPeers[peer.Id] = peer; // Create the security extension var extension = peer.AddExtension(new SecurityInfoPeerExtension()); // Set default permission level extension.PermissionLevel = 0; // Create a unique peer guid extension.UniqueGuid = Guid.NewGuid(); peersByGuidLookup[extension.UniqueGuid] = peer; // Invoke the event OnPeerConnectedEvent?.Invoke(peer); OnPeerConnected(peer); }