1// Copyright (c) 2012 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 NET_SERVER_HTTP_CONNECTION_H_ 6#define NET_SERVER_HTTP_CONNECTION_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/memory/ref_counted.h" 12#include "base/memory/scoped_ptr.h" 13#include "net/http/http_status_code.h" 14 15namespace net { 16 17class HttpServer; 18class HttpServerResponseInfo; 19class StreamListenSocket; 20class WebSocket; 21 22class HttpConnection { 23 public: 24 ~HttpConnection(); 25 26 void Send(const std::string& data); 27 void Send(const char* bytes, int len); 28 void Send(const HttpServerResponseInfo& response); 29 30 void Shift(int num_bytes); 31 32 const std::string& recv_data() const { return recv_data_; } 33 int id() const { return id_; } 34 35 private: 36 friend class HttpServer; 37 static int last_id_; 38 39 HttpConnection(HttpServer* server, StreamListenSocket* sock); 40 41 void DetachSocket(); 42 43 HttpServer* server_; 44 scoped_refptr<StreamListenSocket> socket_; 45 scoped_ptr<WebSocket> web_socket_; 46 std::string recv_data_; 47 int id_; 48 DISALLOW_COPY_AND_ASSIGN(HttpConnection); 49}; 50 51} // namespace net 52 53#endif // NET_SERVER_HTTP_CONNECTION_H_ 54