• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
10 namespace net {
11 namespace test_server {
12 
HttpConnection(scoped_ptr<StreamListenSocket> socket,const HandleRequestCallback & callback)13 HttpConnection::HttpConnection(scoped_ptr<StreamListenSocket> socket,
14                                const HandleRequestCallback& callback)
15     : socket_(socket.Pass()),
16       callback_(callback) {
17 }
18 
~HttpConnection()19 HttpConnection::~HttpConnection() {
20 }
21 
SendResponse(scoped_ptr<HttpResponse> response) const22 void 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 
ReceiveData(const base::StringPiece & data)27 void 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