http_connection.cc revision 58537e28ecd584eab876aee8be7156509866d23a
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#include "net/test/embedded_test_server/http_connection.h"
6
7#include "net/socket/stream_listen_socket.h"
8#include "net/test/embedded_test_server/http_response.h"
9
10namespace net {
11namespace test_server {
12
13HttpConnection::HttpConnection(scoped_ptr<StreamListenSocket> socket,
14                               const HandleRequestCallback& callback)
15    : socket_(socket.Pass()),
16      callback_(callback) {
17}
18
19HttpConnection::~HttpConnection() {
20}
21
22void HttpConnection::SendResponse(scoped_ptr<HttpResponse> response) const {
23  const std::string response_string = response->ToResponseString();
24  socket_->Send(response_string.c_str(), response_string.length());
25}
26
27void HttpConnection::ReceiveData(const base::StringPiece& data) {
28  request_parser_.ProcessChunk(data);
29  if (request_parser_.ParseRequest() == HttpRequestParser::ACCEPTED) {
30    callback_.Run(this, request_parser_.GetRequest());
31  }
32}
33
34}  // namespace test_server
35}  // namespace net
36