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