172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch// found in the LICENSE file. 4201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 5201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#ifndef NET_TOOLS_FLIP_PROXY_CONFIG_H 6201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#define NET_TOOLS_FLIP_PROXY_CONFIG_H 7201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#pragma once 8201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 9201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include <arpa/inet.h> // in_addr_t 10201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string> 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <vector> 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 14201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "base/logging.h" 15201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "net/tools/flip_server/create_listener.h" 16201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace net { 18201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 19201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochenum FlipHandlerType { 20201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch FLIP_HANDLER_PROXY, 21201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch FLIP_HANDLER_SPDY_SERVER, 22201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch FLIP_HANDLER_HTTP_SERVER 23201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch}; 24201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 25201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochclass FlipAcceptor { 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen public: 2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FlipAcceptor(enum FlipHandlerType flip_handler_type, 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string listen_ip, 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string listen_port, 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string ssl_cert_filename, 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string ssl_key_filename, 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string http_server_ip, 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string http_server_port, 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string https_server_ip, 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string https_server_port, 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int spdy_only, 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int accept_backlog_size, 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool disable_nagle, 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int accepts_per_wake, 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool reuseport, 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool wait_for_iface, 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void *memory_cache); 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ~FlipAcceptor(); 4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen enum FlipHandlerType flip_handler_type_; 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string listen_ip_; 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string listen_port_; 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string ssl_cert_filename_; 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string ssl_key_filename_; 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string http_server_ip_; 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string http_server_port_; 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string https_server_ip_; 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string https_server_port_; 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int spdy_only_; 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int accept_backlog_size_; 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool disable_nagle_; 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int accepts_per_wake_; 5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int listen_fd_; 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void* memory_cache_; 6072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int ssl_session_expiry_; 6172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool ssl_disable_compression_; 6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int idle_socket_timeout_s_; 63201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch}; 64201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 65201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochclass FlipConfig { 6672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen public: 6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FlipConfig(); 6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ~FlipConfig(); 69201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void AddAcceptor(enum FlipHandlerType flip_handler_type, 7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string listen_ip, 7272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string listen_port, 7372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string ssl_cert_filename, 7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string ssl_key_filename, 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string http_server_ip, 7672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string http_server_port, 7772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string https_server_ip, 7872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string https_server_port, 7972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int spdy_only, 8072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int accept_backlog_size, 8172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool disable_nagle, 8272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int accepts_per_wake, 8372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool reuseport, 8472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool wait_for_iface, 8572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void *memory_cache); 86201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<FlipAcceptor*> acceptors_; 8872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen double server_think_time_in_s_; 8972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen enum logging::LoggingDestination log_destination_; 9072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string log_filename_; 9172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool wait_for_iface_; 9272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int ssl_session_expiry_; 9372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool ssl_disable_compression_; 9472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int idle_socket_timeout_s_; 9572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}; 96201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 9772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} // namespace 98201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 9972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif // NET_TOOLS_FLIP_PROXY_CONFIG_H 100201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 101