Home | History | Annotate | Download | only in embedded_test_server
      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 
     13 HttpConnection::HttpConnection(StreamListenSocket* socket,
     14                                const HandleRequestCallback& callback)
     15     : socket_(socket),
     16       callback_(callback) {
     17 }
     18 
     19 HttpConnection::~HttpConnection() {
     20 }
     21 
     22 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 
     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