158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef NET_SOCKET_TCP_SOCKET_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define NET_SOCKET_TCP_SOCKET_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "build/build_config.h" 9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "net/base/net_export.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_WIN) 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "net/socket/tcp_socket_win.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#elif defined(OS_POSIX) 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "net/socket/tcp_socket_libevent.h" 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace net { 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// TCPSocket provides a platform-independent interface for TCP sockets. 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// It is recommended to use TCPClientSocket/TCPServerSocket instead of this 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// class, unless a clear separation of client and server socket functionality is 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// not suitable for your use case (e.g., a socket needs to be created and bound 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// before you know whether it is a client or server socket). 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_WIN) 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)typedef TCPSocketWin TCPSocket; 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#elif defined(OS_POSIX) 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)typedef TCPSocketLibevent TCPSocket; 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Check if TCP FastOpen is supported by the OS. 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool IsTCPFastOpenSupported(); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Check if TCP FastOpen is enabled by the user. 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool IsTCPFastOpenUserEnabled(); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Checks if TCP FastOpen is supported by the kernel. Also enables TFO for all 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// connections if indicated by user. 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Not thread safe. Must be called during initialization/startup only. 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNET_EXPORT void CheckSupportAndMaybeEnableTCPFastOpen(bool user_enabled); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace net 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // NET_SOCKET_TCP_SOCKET_H_ 45