fetch_server.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1// Copyright (c) 2010 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 "base/at_exit.h" 6#include "base/command_line.h" 7#include "base/message_loop.h" 8#include "base/metrics/stats_counters.h" 9#include "base/singleton.h" 10#include "net/base/completion_callback.h" 11#include "net/base/io_buffer.h" 12#include "net/base/net_errors.h" 13#include "net/base/winsock_init.h" 14#include "net/http/http_network_layer.h" 15#include "net/http/http_request_info.h" 16#include "net/http/http_transaction.h" 17#include "net/proxy/proxy_service.h" 18#include "net/tools/fetch/http_server.h" 19 20void usage(const char* program_name) { 21 printf("usage: %s\n", program_name); 22 exit(-1); 23} 24 25int main(int argc, char**argv) { 26 base::AtExitManager exit; 27 base::StatsTable table("fetchserver", 50, 1000); 28 table.set_current(&table); 29 30#if defined(OS_WIN) 31 net::EnsureWinsockInit(); 32#endif // defined(OS_WIN) 33 34 CommandLine::Init(0, NULL); 35 const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); 36 37 // Do work here. 38 MessageLoop loop; 39 HttpServer server("", 80); // TODO(mbelshe): make port configurable 40 MessageLoop::current()->Run(); 41 42 if (parsed_command_line.HasSwitch("stats")) { 43 // Dump the stats table. 44 printf("<stats>\n"); 45 int counter_max = table.GetMaxCounters(); 46 for (int index=0; index < counter_max; index++) { 47 std::string name(table.GetRowName(index)); 48 if (name.length() > 0) { 49 int value = table.GetRowValue(index); 50 printf("%s:\t%d\n", name.c_str(), value); 51 } 52 } 53 printf("</stats>\n"); 54 } 55 56} 57