Fix for issue #76, added the WaitTime property to the WebSocketServer class
This commit is contained in:
		@@ -302,6 +302,13 @@ namespace WebSocketSharp
 | 
			
		||||
             : null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    internal static string CheckIfValidWaitTime (this TimeSpan time)
 | 
			
		||||
    {
 | 
			
		||||
      return time <= TimeSpan.Zero
 | 
			
		||||
             ? "A wait time is zero or less."
 | 
			
		||||
             : null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    internal static void Close (this HttpListenerResponse response, HttpStatusCode code)
 | 
			
		||||
    {
 | 
			
		||||
      response.StatusCode = (int) code;
 | 
			
		||||
 
 | 
			
		||||
@@ -481,6 +481,29 @@ namespace WebSocketSharp.Server
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Gets or sets the wait time for the response to the WebSocket Ping or Close.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <value>
 | 
			
		||||
    /// A <see cref="TimeSpan"/> that represents the wait time. The default value is
 | 
			
		||||
    /// the same as 1 second.
 | 
			
		||||
    /// </value>
 | 
			
		||||
    public TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return _services.WaitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      set {
 | 
			
		||||
        var msg = _state.CheckIfStartable () ?? value.CheckIfValidWaitTime ();
 | 
			
		||||
        if (msg != null) {
 | 
			
		||||
          _logger.Error (msg);
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        _services.WaitTime = value;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Gets the access to the WebSocket services provided by the server.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
 
 | 
			
		||||
@@ -67,16 +67,6 @@ namespace WebSocketSharp.Server
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    internal TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return Sessions.WaitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      set {
 | 
			
		||||
        Sessions.WaitTime = value;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Public Properties
 | 
			
		||||
@@ -115,6 +105,15 @@ namespace WebSocketSharp.Server
 | 
			
		||||
    /// </value>
 | 
			
		||||
    public abstract Type Type { get; }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Gets or sets the wait time for the response to the WebSocket Ping or Close.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <value>
 | 
			
		||||
    /// A <see cref="TimeSpan"/> that represents the wait time. The default value is
 | 
			
		||||
    /// the same as 1 second.
 | 
			
		||||
    /// </value>
 | 
			
		||||
    public abstract TimeSpan WaitTime { get; set; }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Internal Methods
 | 
			
		||||
@@ -162,6 +161,7 @@ namespace WebSocketSharp.Server
 | 
			
		||||
    #region Private Fields
 | 
			
		||||
 | 
			
		||||
    private Func<TBehavior>         _initializer;
 | 
			
		||||
    private Logger                  _logger;
 | 
			
		||||
    private string                  _path;
 | 
			
		||||
    private WebSocketSessionManager _sessions;
 | 
			
		||||
 | 
			
		||||
@@ -173,6 +173,7 @@ namespace WebSocketSharp.Server
 | 
			
		||||
    {
 | 
			
		||||
      _path = path;
 | 
			
		||||
      _initializer = initializer;
 | 
			
		||||
      _logger = logger;
 | 
			
		||||
      _sessions = new WebSocketSessionManager (logger);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -208,6 +209,22 @@ namespace WebSocketSharp.Server
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return _sessions.WaitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      set {
 | 
			
		||||
        var msg = _sessions.State.CheckIfStartable () ?? value.CheckIfValidWaitTime ();
 | 
			
		||||
        if (msg != null) {
 | 
			
		||||
          _logger.Error (msg);
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        _sessions.WaitTime = value;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Protected Methods
 | 
			
		||||
 
 | 
			
		||||
@@ -73,27 +73,6 @@ namespace WebSocketSharp.Server
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Internal Properties
 | 
			
		||||
 | 
			
		||||
    internal TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return _waitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      set {
 | 
			
		||||
        lock (_sync) {
 | 
			
		||||
          if (value == _waitTime)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
          _waitTime = value;
 | 
			
		||||
          foreach (var host in _hosts.Values)
 | 
			
		||||
            host.WaitTime = value;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Public Properties
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
@@ -201,6 +180,29 @@ namespace WebSocketSharp.Server
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Gets the wait time for the response to the WebSocket Ping or Close.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <value>
 | 
			
		||||
    /// A <see cref="TimeSpan"/> that represents the wait time.
 | 
			
		||||
    /// </value>
 | 
			
		||||
    public TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return _waitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      internal set {
 | 
			
		||||
        lock (_sync) {
 | 
			
		||||
          if (value == _waitTime)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
          _waitTime = value;
 | 
			
		||||
          foreach (var host in _hosts.Values)
 | 
			
		||||
            host.WaitTime = value;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Private Methods
 | 
			
		||||
 
 | 
			
		||||
@@ -86,21 +86,6 @@ namespace WebSocketSharp.Server
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    internal TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return _waitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      set {
 | 
			
		||||
        if (value == _waitTime)
 | 
			
		||||
          return;
 | 
			
		||||
 | 
			
		||||
        _waitTime = value;
 | 
			
		||||
        foreach (var session in Sessions)
 | 
			
		||||
          session.Context.WebSocket.WaitTime = value;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Public Properties
 | 
			
		||||
@@ -224,6 +209,27 @@ namespace WebSocketSharp.Server
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Gets the wait time for the response to the WebSocket Ping or Close.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <value>
 | 
			
		||||
    /// A <see cref="TimeSpan"/> that represents the wait time.
 | 
			
		||||
    /// </value>
 | 
			
		||||
    public TimeSpan WaitTime {
 | 
			
		||||
      get {
 | 
			
		||||
        return _waitTime;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      internal set {
 | 
			
		||||
        if (value == _waitTime)
 | 
			
		||||
          return;
 | 
			
		||||
 | 
			
		||||
        _waitTime = value;
 | 
			
		||||
        foreach (var session in Sessions)
 | 
			
		||||
          session.Context.WebSocket.WaitTime = value;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region Private Methods
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user