Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        protected virtual LobbyUserPeerExtension GetOrCreateLobbiesExtension(IPeer peer)
        {
            var extension = peer.GetExtension <LobbyUserPeerExtension>();

            if (extension == null)
            {
                extension = new LobbyUserPeerExtension(peer);
                peer.AddExtension(extension);
            }

            return(extension);
        }
Пример #4
0
        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);
        }
Пример #5
0
        /// <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;
                }
            }
        }
Пример #6
0
        /// <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);
        }