diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs
index 6052484b..2c06a8ab 100644
--- a/websocket-sharp/Ext.cs
+++ b/websocket-sharp/Ext.cs
@@ -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;
diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs
index 6d3d83e5..73bcfe1c 100644
--- a/websocket-sharp/Server/WebSocketServer.cs
+++ b/websocket-sharp/Server/WebSocketServer.cs
@@ -481,6 +481,29 @@ namespace WebSocketSharp.Server
}
}
+ ///
+ /// Gets or sets the wait time for the response to the WebSocket Ping or Close.
+ ///
+ ///
+ /// A that represents the wait time. The default value is
+ /// the same as 1 second.
+ ///
+ public TimeSpan WaitTime {
+ get {
+ return _services.WaitTime;
+ }
+
+ set {
+ var msg = _state.CheckIfStartable () ?? value.CheckIfValidWaitTime ();
+ if (msg != null) {
+ _logger.Error (msg);
+ return;
+ }
+
+ _services.WaitTime = value;
+ }
+ }
+
///
/// Gets the access to the WebSocket services provided by the server.
///
diff --git a/websocket-sharp/Server/WebSocketServiceHost.cs b/websocket-sharp/Server/WebSocketServiceHost.cs
index 21407902..8034e841 100644
--- a/websocket-sharp/Server/WebSocketServiceHost.cs
+++ b/websocket-sharp/Server/WebSocketServiceHost.cs
@@ -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
///
public abstract Type Type { get; }
+ ///
+ /// Gets or sets the wait time for the response to the WebSocket Ping or Close.
+ ///
+ ///
+ /// A that represents the wait time. The default value is
+ /// the same as 1 second.
+ ///
+ public abstract TimeSpan WaitTime { get; set; }
+
#endregion
#region Internal Methods
@@ -162,6 +161,7 @@ namespace WebSocketSharp.Server
#region Private Fields
private Func _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
diff --git a/websocket-sharp/Server/WebSocketServiceManager.cs b/websocket-sharp/Server/WebSocketServiceManager.cs
index 949d9d69..1f4e541e 100644
--- a/websocket-sharp/Server/WebSocketServiceManager.cs
+++ b/websocket-sharp/Server/WebSocketServiceManager.cs
@@ -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
///
@@ -201,6 +180,29 @@ namespace WebSocketSharp.Server
}
}
+ ///
+ /// Gets the wait time for the response to the WebSocket Ping or Close.
+ ///
+ ///
+ /// A that represents the wait time.
+ ///
+ 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
diff --git a/websocket-sharp/Server/WebSocketSessionManager.cs b/websocket-sharp/Server/WebSocketSessionManager.cs
index 021857fe..7ebdd17f 100644
--- a/websocket-sharp/Server/WebSocketSessionManager.cs
+++ b/websocket-sharp/Server/WebSocketSessionManager.cs
@@ -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
}
}
+ ///
+ /// Gets the wait time for the response to the WebSocket Ping or Close.
+ ///
+ ///
+ /// A that represents the wait time.
+ ///
+ 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