상속: UdpConnection, IServerConnection, IAuthenticatedConnection
예제 #1
0
        protected override void OnConnectionlessTempestMessage(TempestMessage tempestMessage, Target target)
        {
            ConnectMessage connect = tempestMessage as ConnectMessage;

            if (connect != null)
            {
                UdpServerConnection connection;
                if (this.authKey != null)
                {
                    connection = new UdpServerConnection(GetConnectionId(), target.ToEndPoint(), this, new RSACrypto(), this.crypto, this.authKey);
                }
                else
                {
                    connection = new UdpServerConnection(GetConnectionId(), target.ToEndPoint(), this);
                }

                if (!this.connections.TryAdd(connection.ConnectionId, connection))
                {
                    throw new InvalidOperationException("Reused connection ID");
                }

                connection.Receive(connect);
            }
            else
            {
                base.OnConnectionlessTempestMessage(tempestMessage, target);
            }
        }
예제 #2
0
        internal void Connect(UdpServerConnection connection)
        {
            var args = new ConnectionMadeEventArgs(connection, connection.RemoteKey);

            OnConnectionMade(args);

            if (args.Rejected)
            {
                connection.Dispose();
            }
        }
예제 #3
0
        protected override void OnConnectionlessTempestMessage(TempestMessage tempestMessage, Target target)
        {
            ConnectMessage connect = tempestMessage as ConnectMessage;
            if (connect != null)
            {
                UdpServerConnection connection;
                if (this.authKey != null)
                    connection = new UdpServerConnection (GetConnectionId(), target.ToEndPoint(), this, new RSACrypto(), this.crypto, this.authKey);
                else
                    connection = new UdpServerConnection (GetConnectionId(), target.ToEndPoint(), this);

                if (!this.connections.TryAdd (connection.ConnectionId, connection))
                    throw new InvalidOperationException ("Reused connection ID");

                connection.Receive (connect);
            }
            else
                base.OnConnectionlessTempestMessage (tempestMessage, target);
        }
예제 #4
0
 internal void Disconnect(UdpServerConnection connection)
 {
     UdpServerConnection o;
     this.connections.TryRemove (connection.ConnectionId, out o);
 }
예제 #5
0
        internal void Connect(UdpServerConnection connection)
        {
            var args = new ConnectionMadeEventArgs (connection, connection.RemoteKey);
            OnConnectionMade (args);

            if (args.Rejected)
                connection.Dispose();
        }
예제 #6
0
        internal void Disconnect(UdpServerConnection connection)
        {
            UdpServerConnection o;

            this.connections.TryRemove(connection.ConnectionId, out o);
        }