예제 #1
0
 /// <summary>
 /// Begin disconnect the connection
 /// </summary>
 internal void OnConnectionClose(RtmpServerConnection connection)
 {
     if (!IsDisposed)
     {
         RemoveConnection(connection);
         //connection.Dispose();
     }
 }
예제 #2
0
 internal void RemoveConnection(RtmpServerConnection connection)
 {
     if (!this.IsDisposed)
     {
         lock (_connections)
         {
             _connections.Remove(connection);
         }
     }
 }
예제 #3
0
 internal void AddConnection(RtmpServerConnection connection)
 {
     if (!this.IsDisposed)
     {
         lock (_connections)
         {
             _connections[connection] = connection;
         }
     }
 }
예제 #4
0
 internal RtmpServerConnection[] GetConnections()
 {
     RtmpServerConnection[] connections = null;
     if (!this.IsDisposed)
     {
         lock (_connections)
         {
             connections = new RtmpServerConnection[_connections.Count];
             _connections.Keys.CopyTo(connections, 0);
         }
     }
     return(connections);
 }
예제 #5
0
        internal void InitializeConnection(Socket socket)
        {
            if (!IsDisposed)
            {
                RtmpServerConnection connection = null;
                if (_serverCertificate == null)
                {
                    connection = new RtmpServerConnection(this, new RtmpNetworkStream(socket));
                    if (log.IsDebugEnabled)
                    {
                        log.Debug(__Res.GetString(__Res.Rtmp_SocketListenerAccept, connection.ConnectionId));
                    }
                }
                else
                {
                    SslStream sslStream = new SslStream(new NetworkStream(socket, false), false);
                    //sslStream.AuthenticateAsServer(_serverCertificate, false, SslProtocols.Tls, true);
                    sslStream.AuthenticateAsServer(_serverCertificate, false, SslProtocols.Default, false);
                    connection = new RtmpServerConnection(this, new RtmpNetworkStream(socket, sslStream));
                    if (log.IsDebugEnabled)
                    {
                        log.Debug(__Res.GetString(__Res.Rtmp_SocketListenerAccept, connection.ConnectionId));

                        string msg = string.Format("Cipher: {0} strength {1} Hash: {2} strength {3} Key exchange: {4} strength {5} Protocol: {6} Signed: {7} Encrypted: {8}",
                                                   sslStream.CipherAlgorithm, sslStream.CipherStrength,
                                                   sslStream.HashAlgorithm, sslStream.HashStrength,
                                                   sslStream.KeyExchangeAlgorithm, sslStream.KeyExchangeStrength,
                                                   sslStream.SslProtocol, sslStream.IsSigned, sslStream.IsEncrypted);
                        log.Debug(msg);
                    }
                }

                //We are still in an IOCP thread
                this.AddConnection(connection);
                //FluorineRtmpContext.Initialize(connection);
                _rtmpHandler.ConnectionOpened(connection);
                connection.BeginReceive(true);
            }
        }
예제 #6
0
		/// <summary>
		/// Begin disconnect the connection
		/// </summary>
        internal void OnConnectionClose(RtmpServerConnection connection)
		{
			if(!IsDisposed)
			{
                RemoveConnection(connection);
                //connection.Dispose();
			}
		}
예제 #7
0
        internal void InitializeConnection(Socket socket)
		{
			if(!IsDisposed)
			{
                RtmpServerConnection connection = null;
                if (_serverCertificate == null)
                {
                    connection = new RtmpServerConnection(this, new RtmpNetworkStream(socket));
                    if (log.IsDebugEnabled)
                        log.Debug(__Res.GetString(__Res.Rtmp_SocketListenerAccept, connection.ConnectionId));
                }
                else
                {
                    SslStream sslStream = new SslStream(new NetworkStream(socket, false), false);
                    //sslStream.AuthenticateAsServer(_serverCertificate, false, SslProtocols.Tls, true);
                    sslStream.AuthenticateAsServer(_serverCertificate, false, SslProtocols.Default, false);
                    connection = new RtmpServerConnection(this, new RtmpNetworkStream(socket, sslStream));
                    if (log.IsDebugEnabled)
                    {
                        log.Debug(__Res.GetString(__Res.Rtmp_SocketListenerAccept, connection.ConnectionId));

                        string msg = string.Format("Cipher: {0} strength {1} Hash: {2} strength {3} Key exchange: {4} strength {5} Protocol: {6} Signed: {7} Encrypted: {8}",
                            sslStream.CipherAlgorithm, sslStream.CipherStrength,
                            sslStream.HashAlgorithm, sslStream.HashStrength,
                            sslStream.KeyExchangeAlgorithm, sslStream.KeyExchangeStrength,
                            sslStream.SslProtocol, sslStream.IsSigned, sslStream.IsEncrypted);
                        log.Debug(msg);
                    }
                }

                //We are still in an IOCP thread 
                this.AddConnection(connection);
                //FluorineRtmpContext.Initialize(connection);
                _rtmpHandler.ConnectionOpened(connection);
                connection.BeginReceive(true);
			}
		}
예제 #8
0
        internal void RemoveConnection(RtmpServerConnection connection)
		{
			if(!this.IsDisposed)
			{
				lock(_connections)
				{
                    _connections.Remove(connection);
				}
			}
		}
예제 #9
0
        internal void AddConnection(RtmpServerConnection connection)
		{
			if(!this.IsDisposed)
			{
				lock(_connections)
				{
                    _connections[connection] = connection;
				}
			}

		}
예제 #10
0
        internal RtmpServerConnection[] GetConnections()
		{
            RtmpServerConnection[] connections = null;
			if(!this.IsDisposed)
			{
				lock(_connections)
				{
                    connections = new RtmpServerConnection[_connections.Count];
                    _connections.Keys.CopyTo(connections, 0);
				}

			}
            return connections;
		}