{-# language BangPatterns #-}
{-# language DataKinds #-}
{-# language DuplicateRecordFields #-}
{-# language LambdaCase #-}
{-# language MagicHash #-}
{-# language NamedFieldPuns #-}
{-# language UnboxedTuples #-}
module Socket.Datagram.Uninterruptible.MutableBytes.Many
( receiveMany
, receiveManyFromIPv4
) where
import GHC.Exts (proxy#)
import GHC.IO (IO(..))
import Socket (Interruptibility(Uninterruptible))
import Socket (Connectedness(..))
import Socket.Datagram (Socket(..),ReceiveException)
import Socket.IPv4 (IPv4Slab(..))
import qualified Socket.Discard
import qualified Socket as SCK
import qualified Socket.Datagram.Uninterruptible.MutableBytes.Receive.Many.Unit as RU
import qualified Socket.Datagram.Uninterruptible.MutableBytes.Receive.Many.IPv4 as RV4
receiveMany ::
Socket c a
-> Socket.Discard.PeerlessSlab
-> IO (Either (ReceiveException 'Uninterruptible) Int)
receiveMany (Socket fd) (Socket.Discard.PeerlessSlab{sizes,payloads}) =
RU.receiveMany proxy# fd sizes () payloads
receiveManyFromIPv4 ::
Socket 'Unconnected ('SCK.Internet 'SCK.V4)
-> Socket.IPv4.IPv4Slab
-> IO (Either (ReceiveException 'Uninterruptible) Int)
receiveManyFromIPv4 (Socket fd) (Socket.IPv4.IPv4Slab{sizes,peers,payloads}) =
RV4.receiveMany proxy# fd sizes peers payloads