// 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. #include "net/test/embedded_test_server/http_connection.h" #include "net/socket/stream_listen_socket.h" #include "net/test/embedded_test_server/http_response.h" namespace net { namespace test_server { HttpConnection::HttpConnection(scoped_ptr socket, const HandleRequestCallback& callback) : socket_(socket.Pass()), callback_(callback) { } HttpConnection::~HttpConnection() { } void HttpConnection::SendResponse(scoped_ptr response) const { const std::string response_string = response->ToResponseString(); socket_->Send(response_string.c_str(), response_string.length()); } void HttpConnection::ReceiveData(const base::StringPiece& data) { request_parser_.ProcessChunk(data); if (request_parser_.ParseRequest() == HttpRequestParser::ACCEPTED) { callback_.Run(this, request_parser_.GetRequest()); } } } // namespace test_server } // namespace net