{-# LINE 1 "Network/Socket/ByteString/MsgHdr.hsc" #-}
{-# OPTIONS_GHC -funbox-strict-fields #-}
module Network.Socket.ByteString.MsgHdr
( MsgHdr(..)
) where
import Network.Socket.Imports
import Network.Socket.Internal (zeroMemory)
import Network.Socket.Types (SockAddr)
import Network.Socket.ByteString.IOVec (IOVec)
data MsgHdr = MsgHdr
{ MsgHdr -> Ptr SockAddr
msgName :: !(Ptr SockAddr)
, MsgHdr -> CUInt
msgNameLen :: !CUInt
, MsgHdr -> Ptr IOVec
msgIov :: !(Ptr IOVec)
, MsgHdr -> CSize
msgIovLen :: !CSize
}
instance Storable MsgHdr where
sizeOf :: MsgHdr -> Int
sizeOf MsgHdr
_ = (Int
56)
{-# LINE 28 "Network/Socket/ByteString/MsgHdr.hsc" #-}
alignment _ = alignment (undefined :: CInt)
peek :: Ptr MsgHdr -> IO MsgHdr
peek Ptr MsgHdr
p = do
Ptr SockAddr
name <- ((\Ptr MsgHdr
hsc_ptr -> Ptr MsgHdr -> Int -> IO (Ptr SockAddr)
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr MsgHdr
hsc_ptr Int
0)) Ptr MsgHdr
p
{-# LINE 32 "Network/Socket/ByteString/MsgHdr.hsc" #-}
nameLen <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) p
{-# LINE 33 "Network/Socket/ByteString/MsgHdr.hsc" #-}
iov <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) p
{-# LINE 34 "Network/Socket/ByteString/MsgHdr.hsc" #-}
iovLen <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) p
{-# LINE 35 "Network/Socket/ByteString/MsgHdr.hsc" #-}
return $ MsgHdr name nameLen iov iovLen
poke :: Ptr MsgHdr -> MsgHdr -> IO ()
poke Ptr MsgHdr
p MsgHdr
mh = do
Ptr MsgHdr -> CSize -> IO ()
forall a. Ptr a -> CSize -> IO ()
zeroMemory Ptr MsgHdr
p (CSize
56)
{-# LINE 42 "Network/Socket/ByteString/MsgHdr.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p (msgName mh)
{-# LINE 43 "Network/Socket/ByteString/MsgHdr.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) p (msgNameLen mh)
{-# LINE 44 "Network/Socket/ByteString/MsgHdr.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) p (msgIov mh)
{-# LINE 45 "Network/Socket/ByteString/MsgHdr.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 24)) p (msgIovLen mh)
{-# LINE 46 "Network/Socket/ByteString/MsgHdr.hsc" #-}