// Copyright 2017 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_SOCKET_SOCKET_OPTIONS_H_
#define NET_SOCKET_SOCKET_OPTIONS_H_

#include "net/base/net_export.h"
#include "net/socket/socket_descriptor.h"
#include "starboard/types.h"

namespace net {

// This function enables/disables buffering in the kernel. By default, on Linux,
// TCP sockets will wait up to 200ms for more data to complete a packet before
// transmitting. After calling this function, the kernel will not wait. See
// TCP_NODELAY in `man 7 tcp`.
//
// For Windows:
//
// The Nagle implementation on Windows is governed by RFC 896.  The idea
// behind Nagle is to reduce small packets on the network.  When Nagle is
// enabled, if a partial packet has been sent, the TCP stack will disallow
// further *partial* packets until an ACK has been received from the other
// side.  Good applications should always strive to send as much data as
// possible and avoid partial-packet sends.  However, in most real world
// applications, there are edge cases where this does not happen, and two
// partial packets may be sent back to back.  For a browser, it is NEVER
// a benefit to delay for an RTT before the second packet is sent.
//
// As a practical example in Chromium today, consider the case of a small
// POST.  I have verified this:
//     Client writes 649 bytes of header  (partial packet #1)
//     Client writes 50 bytes of POST data (partial packet #2)
// In the above example, with Nagle, a RTT delay is inserted between these
// two sends due to nagle.  RTTs can easily be 100ms or more.  The best
// fix is to make sure that for POSTing data, we write as much data as
// possible and minimize partial packets.  We will fix that.  But disabling
// Nagle also ensure we don't run into this delay in other edge cases.
// See also:
//    http://technet.microsoft.com/en-us/library/bb726981.aspx
//
// SetTCPNoDelay() sets the TCP_NODELAY option. Use |no_delay| to enable or
// disable it. On error returns a net error code, on success returns OK.
int SetTCPNoDelay(SocketDescriptor fd, bool no_delay);

// SetReuseAddr() sets the SO_REUSEADDR socket option. Use |reuse| to enable or
// disable it. On error returns a net error code, on success returns OK.
int SetReuseAddr(SocketDescriptor fd, bool reuse);

// SetSocketReceiveBufferSize() sets the SO_RCVBUF socket option. On error
// returns a net error code, on success returns OK.
int SetSocketReceiveBufferSize(SocketDescriptor fd, int32_t size);

// SetSocketSendBufferSize() sets the SO_SNDBUF socket option. On error
// returns a net error code, on success returns OK.
int SetSocketSendBufferSize(SocketDescriptor fd, int32_t size);

}  // namespace net

#endif  // NET_SOCKET_SOCKET_OPTIONS_H_
