blob: 8ab619c1dfd7f9c5c100bf1f73ad55895842dc14 [file] [log] [blame]
// Copyright (c) 2009 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.
#ifndef NET_TOOLS_FLIP_SERVER_CREATE_LISTENER_H__
#define NET_TOOLS_FLIP_SERVER_CREATE_LISTENER_H__
#include <iosfwd>
#include <string>
namespace net {
void FlipSetNonBlocking(int fd);
// Summary:
// creates a socket for listening, and bind()s and listen()s it.
// Args:
// host - hostname or numeric address, or empty-string if you want
// to bind to listen on all addresses
// port - a port number or service name. By service name I mean a
// -real- service name, not a Google service name. I'd suggest
// you just stick to a numeric representation like "80"
// is_numeric_host_address -
// if you know that the host address has already been looked-up,
// and will be provided in numeric form like "130.207.244.244",
// then you can set this to true, and it will save you the time
// of a DNS lookup.
// backlog - passed into listen. This is the number of pending incoming
// connections a socket which is listening may have acquired before
// the OS starts rejecting new incoming connections.
// reuseaddr - if true sets SO_REUSEADDR on the listening socket
// reuseport - if true sets SO_REUSEPORT on the listening socket
// wait_for_iface - A boolean indicating that CreateListeningSocket should
// block until the interface that it will bind to has been
// raised. This is intended for HA environments.
// disable_nagle - if true sets TCP_NODELAY on the listening socket.
// listen_fd - this will be assigned a positive value if the socket is
// successfully created, else it will be assigned -1.
int CreateListeningSocket(const std::string& host,
const std::string& port,
bool is_numeric_host_address,
int backlog,
bool reuseaddr,
bool reuseport,
bool wait_for_iface,
bool disable_nagle,
int* listen_fd);
int CreateConnectedSocket(int* connect_fd,
const std::string& host,
const std::string& port,
bool is_numeric_host_address,
bool disable_nagle);
} // namespace net
#endif // NET_TOOLS_FLIP_SERVER_CREATE_LISTENER_H__