diff options
author | Eugene Ostroukhov <eostroukhov@chromium.org> | 2017-05-01 23:31:14 +0300 |
---|---|---|
committer | Eugene Ostroukhov <eostroukhov@chromium.org> | 2017-05-22 21:18:31 +0300 |
commit | 5c26378cb775526fbd71b91c2f9ad5e5fcee9d3e (patch) | |
tree | 76f7730f0eff6b62bcb9bfde97346d393889a020 /src/inspector_socket_server.h | |
parent | 3429c90f42c00ba3657f7c8d288843c5062a4bb5 (diff) |
inspector: fix process._debugEnd() for inspector
This change ensures that the WebSocket server can be stopped
(and restarted if needed) buy calling process._debugEnd.
PR-URL: https://github.com/nodejs/node/pull/12777
Fixes: https://github.com/nodejs/node/issues/12559
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Diffstat (limited to 'src/inspector_socket_server.h')
-rw-r--r-- | src/inspector_socket_server.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/inspector_socket_server.h b/src/inspector_socket_server.h index b82d9ee6013..8c8e2aaade9 100644 --- a/src/inspector_socket_server.h +++ b/src/inspector_socket_server.h @@ -27,6 +27,7 @@ class SocketServerDelegate { virtual std::vector<std::string> GetTargetIds() = 0; virtual std::string GetTargetTitle(const std::string& id) = 0; virtual std::string GetTargetUrl(const std::string& id) = 0; + virtual void ServerDone() = 0; }; class InspectorSocketServer { @@ -39,7 +40,7 @@ class InspectorSocketServer { bool Start(uv_loop_t* loop); void Stop(ServerCallback callback); void Send(int session_id, const std::string& message); - void TerminateConnections(ServerCallback callback); + void TerminateConnections(); int port() { return port_; } @@ -59,11 +60,11 @@ class InspectorSocketServer { void SendListResponse(InspectorSocket* socket); void ReadCallback(InspectorSocket* socket, ssize_t read, const uv_buf_t* buf); bool SessionStarted(SocketSession* session, const std::string& id); - void SessionTerminated(int id); + void SessionTerminated(SocketSession* session); bool TargetExists(const std::string& id); - static void SocketSessionDeleter(SocketSession*); SocketServerDelegate* Delegate() { return delegate_; } + enum class ServerState {kNew, kRunning, kStopping, kStopped}; uv_loop_t* loop_; SocketServerDelegate* const delegate_; const std::string host_; @@ -74,6 +75,7 @@ class InspectorSocketServer { std::map<int, SocketSession*> connected_sessions_; int next_session_id_; FILE* out_; + ServerState state_; friend class SocketSession; friend class Closer; |