Home | History | Annotate | Download | only in flip_server
      1 // Copyright (c) 2009 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 #ifndef NET_TOOLS_FLIP_SERVER_CREATE_LISTENER_H__
      6 #define NET_TOOLS_FLIP_SERVER_CREATE_LISTENER_H__
      7 
      8 #include <iosfwd>
      9 #include <string>
     10 
     11 namespace net {
     12 
     13 void SetNonBlocking(int fd);
     14 
     15 // Summary:
     16 //   creates a socket for listening, and bind()s and listen()s it.
     17 // Args:
     18 //   host - hostname or numeric address, or empty-string if you want
     19 //          to bind to listen on all addresses
     20 //   port - a port number or service name. By service name I mean a
     21 //          -real- service name, not a Google service name. I'd suggest
     22 //          you just stick to a numeric representation like "80"
     23 //   is_numeric_host_address -
     24 //           if you know that the host address has already been looked-up,
     25 //           and will be provided in numeric form like "130.207.244.244",
     26 //           then you can set this to true, and it will save you the time
     27 //           of a DNS lookup.
     28 //   backlog - passed into listen. This is the number of pending incoming
     29 //             connections a socket which is listening may have acquired before
     30 //             the OS starts rejecting new incoming connections.
     31 //   reuseaddr - if true sets SO_REUSEADDR on the listening socket
     32 //   reuseport - if true sets SO_REUSEPORT on the listening socket
     33 //   wait_for_iface - A boolean indicating that CreateListeningSocket should
     34 //                    block until the interface that it will bind to has been
     35 //                    raised. This is intended for HA environments.
     36 //   disable_nagle - if true sets TCP_NODELAY on the listening socket.
     37 //   listen_fd - this will be assigned a positive value if the socket is
     38 //               successfully created, else it will be assigned -1.
     39 int CreateListeningSocket(const std::string& host,
     40                           const std::string& port,
     41                           bool is_numeric_host_address,
     42                           int backlog,
     43                           bool reuseaddr,
     44                           bool reuseport,
     45                           bool wait_for_iface,
     46                           bool disable_nagle,
     47                           int * listen_fd);
     48 
     49 int CreateConnectedSocket(int *connect_fd,
     50                           const std::string& host,
     51                           const std::string& port,
     52                           bool is_numeric_host_address,
     53                           bool disable_nagle);
     54 }  // namespace net
     55 
     56 #endif  // NET_TOOLS_FLIP_SERVER_CREATE_LISTENER_H__
     57 
     58