{-# LINE 1 "src/System/Socket/Protocol/TCP.hsc" #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  System.Socket.Protocol.TCP
-- Copyright   :  (c) Lars Petersen 2015
-- License     :  MIT
--
-- Maintainer  :  info@lars-petersen.net
-- Stability   :  experimental
--------------------------------------------------------------------------------
module System.Socket.Protocol.TCP where

import Foreign.C.Types

import System.Socket.Internal.Socket
import System.Socket.Internal.SocketOption



data TCP

instance Protocol TCP where
  protocolNumber _ = (6)
{-# LINE 23 "src/System/Socket/Protocol/TCP.hsc" #-}

-- | If set to True, disable the Nagle's algorithm.
--
--  - Also know as @TCP_NODELAY@.
data NoDelay
  = NoDelay Bool
  deriving (Eq, Ord, Show)

instance SocketOption NoDelay where
  getSocketOption s =
    (NoDelay . (/=0) :: CInt -> NoDelay) `fmap` unsafeGetSocketOption s (6) (1)
{-# LINE 34 "src/System/Socket/Protocol/TCP.hsc" #-}
  setSocketOption s (NoDelay o) =
    unsafeSetSocketOption s (6) (1) (if o then 1 else 0 :: CInt)
{-# LINE 36 "src/System/Socket/Protocol/TCP.hsc" #-}