| // Copyright (c) 2011 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 "base/at_exit.h" |
| #include "base/command_line.h" |
| #include "base/memory/singleton.h" |
| #include "base/message_loop.h" |
| #include "base/metrics/stats_counters.h" |
| #include "net/base/completion_callback.h" |
| #include "net/base/io_buffer.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/winsock_init.h" |
| #include "net/http/http_network_layer.h" |
| #include "net/http/http_request_info.h" |
| #include "net/http/http_transaction.h" |
| #include "net/proxy/proxy_service.h" |
| #include "net/tools/fetch/http_server.h" |
| |
| void usage(const char* program_name) { |
| printf("usage: %s\n", program_name); |
| exit(-1); |
| } |
| |
| int main(int argc, char**argv) { |
| base::AtExitManager exit; |
| base::StatsTable table("fetchserver", 50, 1000); |
| table.set_current(&table); |
| |
| #if defined(OS_WIN) |
| net::EnsureWinsockInit(); |
| #endif // defined(OS_WIN) |
| |
| CommandLine::Init(0, NULL); |
| const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); |
| |
| // Do work here. |
| MessageLoop loop; |
| HttpServer server("", 80); // TODO(mbelshe): make port configurable |
| MessageLoop::current()->Run(); |
| |
| if (parsed_command_line.HasSwitch("stats")) { |
| // Dump the stats table. |
| printf("<stats>\n"); |
| int counter_max = table.GetMaxCounters(); |
| for (int index=0; index < counter_max; index++) { |
| std::string name(table.GetRowName(index)); |
| if (name.length() > 0) { |
| int value = table.GetRowValue(index); |
| printf("%s:\t%d\n", name.c_str(), value); |
| } |
| } |
| printf("</stats>\n"); |
| } |
| |
| } |