• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef MOJO_SPY_WEBSOCKET_SERVER_H_
6 #define MOJO_SPY_WEBSOCKET_SERVER_H_
7 
8 #include "net/server/http_server.h"
9 
10 namespace spy {
11 
12 class WebSocketServer : public net::HttpServer::Delegate {
13  public:
14   // Pass 0 in |port| to listen in one available port.
15   explicit WebSocketServer(int port);
16   virtual ~WebSocketServer();
17   // Begin accepting HTTP requests. Must be called from an IO MessageLoop.
18   bool Start();
19   // Returns the listening port, useful if 0 was passed to the contructor.
port()20   int port() const { return port_; }
21 
22  protected:
23   // Overridden from net::HttpServer::Delegate.
24   virtual void OnHttpRequest(
25       int connection_id,
26       const net::HttpServerRequestInfo& info) OVERRIDE;
27   virtual void OnWebSocketRequest(
28       int connection_id,
29       const net::HttpServerRequestInfo& info) OVERRIDE;
30   virtual void OnWebSocketMessage(
31       int connection_id,
32       const std::string& data) OVERRIDE;
33   virtual void OnClose(int connection_id) OVERRIDE;
34 
35  private:
36   int port_;
37   int connection_id_;
38   scoped_refptr<net::HttpServer> server_;
39   DISALLOW_COPY_AND_ASSIGN(WebSocketServer);
40 };
41 
42 }  // namespace spy
43 
44 #endif  // MOJO_SPY_WEBSOCKET_SERVER_H_
45