socket-0.2.0.0: src/System/Socket/Internal/MsgFlags.hsc
module System.Socket.Internal.MsgFlags (
MsgFlags (..)
, msgEOR
, msgNOSIGNAL
, msgOOB
, msgWAITALL
) where
import Data.Bits
import Data.Monoid
import Foreign.C.Types
#include "sys/socket.h"
-- | Use the `Data.Monoid.Monoid` instance to combine several flags:
--
-- > mconcat [msgNOSIGNAL, msgWAITALL]
newtype MsgFlags
= MsgFlags CInt
deriving (Eq, Show)
instance Monoid MsgFlags where
mempty
= MsgFlags 0
mappend (MsgFlags a) (MsgFlags b)
= MsgFlags (a .|. b)
msgEOR :: MsgFlags
msgEOR = MsgFlags (#const MSG_EOR)
msgNOSIGNAL :: MsgFlags
msgNOSIGNAL = MsgFlags (#const MSG_NOSIGNAL)
msgOOB :: MsgFlags
msgOOB = MsgFlags (#const MSG_OOB)
msgWAITALL :: MsgFlags
msgWAITALL = MsgFlags (#const MSG_WAITALL)