1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be
3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file.
4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/tools/fetch/http_session.h"
6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/tools/fetch/http_server_response_info.h"
7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottHttpSession::HttpSession(const std::string& ip, int port)
9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    : ALLOW_THIS_IN_INITIALIZER_LIST(
10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott          socket_(HttpListenSocket::Listen(ip, port, this))) {
11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottHttpSession::~HttpSession() {
14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid HttpSession::OnRequest(HttpListenSocket* connection,
17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                            HttpServerRequestInfo* info) {
18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // TODO(mbelshe):  Make this function more interesting.
19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // Generate a 10KB sequence of data.
21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static std::string data;
22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  if (data.length() == 0) {
23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    while (data.length() < (10 * 1024))
24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      data += 'a' + (rand() % 26);
25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  }
26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  HttpServerResponseInfo response_info;
28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  response_info.protocol = "HTTP/1.1";
29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  response_info.status = 200;
30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  response_info.content_type = "text/plain";
31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  response_info.content_length = data.length();
32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  connection->Respond(&response_info, data);
34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
35