Added GetWebSocketStream method to HttpConnection class
This commit is contained in:
		@@ -72,11 +72,13 @@ namespace WebSocketSharp.Net
 | 
			
		||||
    private ListenerPrefix      _prefix;
 | 
			
		||||
    private MemoryStream        _requestBuffer;
 | 
			
		||||
    private int                 _reuses;
 | 
			
		||||
    private bool                _secure;
 | 
			
		||||
    private Socket              _socket;
 | 
			
		||||
    private Stream              _stream;
 | 
			
		||||
    private object              _sync;
 | 
			
		||||
    private int                 _timeout;
 | 
			
		||||
    private Timer               _timer;
 | 
			
		||||
    private WebSocketStream     _websocketStream;
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
@@ -86,9 +88,10 @@ namespace WebSocketSharp.Net
 | 
			
		||||
    {
 | 
			
		||||
      _socket = socket;
 | 
			
		||||
      _listener = listener;
 | 
			
		||||
      _secure = listener.IsSecure;
 | 
			
		||||
 | 
			
		||||
      var netStream = new NetworkStream (socket, false);
 | 
			
		||||
      if (listener.IsSecure) {
 | 
			
		||||
      if (_secure) {
 | 
			
		||||
        var sslStream = new SslStream (netStream, false);
 | 
			
		||||
        sslStream.AuthenticateAsServer (listener.Certificate);
 | 
			
		||||
        _stream = sslStream;
 | 
			
		||||
@@ -116,7 +119,7 @@ namespace WebSocketSharp.Net
 | 
			
		||||
 | 
			
		||||
    public bool IsSecure {
 | 
			
		||||
      get {
 | 
			
		||||
        return _listener.IsSecure;
 | 
			
		||||
        return _secure;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -200,6 +203,9 @@ namespace WebSocketSharp.Net
 | 
			
		||||
      if (_stream == null)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
      _inputStream = null;
 | 
			
		||||
      _websocketStream = null;
 | 
			
		||||
 | 
			
		||||
      _stream.Dispose ();
 | 
			
		||||
      _stream = null;
 | 
			
		||||
    }
 | 
			
		||||
@@ -510,6 +516,20 @@ namespace WebSocketSharp.Net
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public WebSocketStream GetWebSocketStream ()
 | 
			
		||||
    {
 | 
			
		||||
      if (_websocketStream != null || _socket == null)
 | 
			
		||||
        return _websocketStream;
 | 
			
		||||
 | 
			
		||||
      lock (_sync) {
 | 
			
		||||
        if (_socket == null)
 | 
			
		||||
          return _websocketStream;
 | 
			
		||||
 | 
			
		||||
        _websocketStream = new WebSocketStream (_stream, _secure);
 | 
			
		||||
        return _websocketStream;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void SendError ()
 | 
			
		||||
    {
 | 
			
		||||
      SendError (_context.ErrorMessage, _context.ErrorStatus);
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,6 @@ namespace WebSocketSharp.Net.WebSockets
 | 
			
		||||
    #region Private Fields
 | 
			
		||||
 | 
			
		||||
    private HttpListenerContext _context;
 | 
			
		||||
    private WebSocketStream     _stream;
 | 
			
		||||
    private WebSocket           _websocket;
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
@@ -55,7 +54,6 @@ namespace WebSocketSharp.Net.WebSockets
 | 
			
		||||
      HttpListenerContext context, string protocol, Logger logger)
 | 
			
		||||
    {
 | 
			
		||||
      _context = context;
 | 
			
		||||
      _stream = WebSocketStream.CreateServerStream (context);
 | 
			
		||||
      _websocket = new WebSocket (this, protocol, logger);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -65,7 +63,7 @@ namespace WebSocketSharp.Net.WebSockets
 | 
			
		||||
 | 
			
		||||
    internal WebSocketStream Stream {
 | 
			
		||||
      get {
 | 
			
		||||
        return _stream;
 | 
			
		||||
        return _context.Connection.GetWebSocketStream ();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -141,7 +139,7 @@ namespace WebSocketSharp.Net.WebSockets
 | 
			
		||||
    /// </value>
 | 
			
		||||
    public override bool IsSecureConnection {
 | 
			
		||||
      get {
 | 
			
		||||
        return _context.Request.IsSecureConnection;
 | 
			
		||||
        return _context.Connection.IsSecure;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -239,12 +239,6 @@ namespace WebSocketSharp
 | 
			
		||||
      return new WebSocketStream (netStream);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static WebSocketStream CreateServerStream (HttpListenerContext context)
 | 
			
		||||
    {
 | 
			
		||||
      var conn = context.Connection;
 | 
			
		||||
      return new WebSocketStream (conn.Stream, conn.IsSecure);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void Dispose ()
 | 
			
		||||
    {
 | 
			
		||||
      _innerStream.Dispose ();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user