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