| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef NET_SERVER_WEB_SOCKET_H_ |
| #define NET_SERVER_WEB_SOCKET_H_ |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/strings/string_piece.h" |
| |
| namespace net { |
| |
| class HttpConnection; |
| class HttpServer; |
| class HttpServerRequestInfo; |
| |
| class WebSocket { |
| public: |
| enum ParseResult { |
| FRAME_OK, |
| FRAME_INCOMPLETE, |
| FRAME_CLOSE, |
| FRAME_ERROR |
| }; |
| |
| static WebSocket* CreateWebSocket(HttpServer* server, |
| HttpConnection* connection, |
| const HttpServerRequestInfo& request, |
| size_t* pos); |
| |
| virtual void Accept(const HttpServerRequestInfo& request) = 0; |
| virtual ParseResult Read(std::string* message) = 0; |
| virtual void Send(const std::string& message) = 0; |
| virtual ~WebSocket(); |
| |
| protected: |
| WebSocket(HttpServer* server, HttpConnection* connection); |
| |
| HttpServer* const server_; |
| HttpConnection* const connection_; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(WebSocket); |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_SERVER_WEB_SOCKET_H_ |