Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / mojo / spy / websocket_server.h
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.
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_