1// Copyright 2013 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_SOCKET_TCP_SOCKET_H_ 6#define NET_SOCKET_TCP_SOCKET_H_ 7 8#include "build/build_config.h" 9#include "net/base/net_export.h" 10 11#if defined(OS_WIN) 12#include "net/socket/tcp_socket_win.h" 13#elif defined(OS_POSIX) 14#include "net/socket/tcp_socket_libevent.h" 15#endif 16 17namespace net { 18 19// TCPSocket provides a platform-independent interface for TCP sockets. 20// 21// It is recommended to use TCPClientSocket/TCPServerSocket instead of this 22// class, unless a clear separation of client and server socket functionality is 23// not suitable for your use case (e.g., a socket needs to be created and bound 24// before you know whether it is a client or server socket). 25#if defined(OS_WIN) 26typedef TCPSocketWin TCPSocket; 27#elif defined(OS_POSIX) 28typedef TCPSocketLibevent TCPSocket; 29#endif 30 31// Check if TCP FastOpen is supported by the OS. 32bool IsTCPFastOpenSupported(); 33 34// Check if TCP FastOpen is enabled by the user. 35bool IsTCPFastOpenUserEnabled(); 36 37// Checks if TCP FastOpen is supported by the kernel. Also enables TFO for all 38// connections if indicated by user. 39// Not thread safe. Must be called during initialization/startup only. 40NET_EXPORT void CheckSupportAndMaybeEnableTCPFastOpen(bool user_enabled); 41 42} // namespace net 43 44#endif // NET_SOCKET_TCP_SOCKET_H_ 45