module Netcode.IO.Callbacks where
import Data.Word (Word8)
import Foreign.C.Types (CInt)
import Foreign.ForeignPtr (newForeignPtr_)
import Foreign.Ptr (Ptr)
import Bindings.Netcode.IO
import Netcode.IO.Address
type SendPacketOverride
= Address
-> Ptr Word8
-> CInt
-> IO ()
mkSendPacketOverride :: SendPacketOverride -> IO C'send_packet_override_t
mkSendPacketOverride :: SendPacketOverride -> IO C'send_packet_override_t
mkSendPacketOverride sendFn :: SendPacketOverride
sendFn =
(Ptr () -> Ptr C'netcode_address_t -> Ptr Word8 -> CInt -> IO ())
-> IO C'send_packet_override_t
mk'send_packet_override_t ((Ptr () -> Ptr C'netcode_address_t -> Ptr Word8 -> CInt -> IO ())
-> IO C'send_packet_override_t)
-> (Ptr ()
-> Ptr C'netcode_address_t -> Ptr Word8 -> CInt -> IO ())
-> IO C'send_packet_override_t
forall a b. (a -> b) -> a -> b
$ \_ aptr :: Ptr C'netcode_address_t
aptr pkt :: Ptr Word8
pkt pktSize :: CInt
pktSize -> do
Address
addr <- ForeignPtr C'netcode_address_t -> Address
Address (ForeignPtr C'netcode_address_t -> Address)
-> IO (ForeignPtr C'netcode_address_t) -> IO Address
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr C'netcode_address_t -> IO (ForeignPtr C'netcode_address_t)
forall a. Ptr a -> IO (ForeignPtr a)
newForeignPtr_ Ptr C'netcode_address_t
aptr
SendPacketOverride
sendFn Address
addr Ptr Word8
pkt CInt
pktSize
type ReceivePacketOverride
= Address
-> Ptr Word8
-> CInt
-> IO CInt
mkReceivePacketOverride :: ReceivePacketOverride
-> IO C'receive_packet_override_t
mkReceivePacketOverride :: ReceivePacketOverride -> IO C'receive_packet_override_t
mkReceivePacketOverride recvFn :: ReceivePacketOverride
recvFn =
(Ptr () -> Ptr C'netcode_address_t -> Ptr Word8 -> CInt -> IO CInt)
-> IO C'receive_packet_override_t
mk'receive_packet_override_t ((Ptr ()
-> Ptr C'netcode_address_t -> Ptr Word8 -> CInt -> IO CInt)
-> IO C'receive_packet_override_t)
-> (Ptr ()
-> Ptr C'netcode_address_t -> Ptr Word8 -> CInt -> IO CInt)
-> IO C'receive_packet_override_t
forall a b. (a -> b) -> a -> b
$ \_ aptr :: Ptr C'netcode_address_t
aptr pkt :: Ptr Word8
pkt pktSize :: CInt
pktSize -> do
Address
addr <- ForeignPtr C'netcode_address_t -> Address
Address (ForeignPtr C'netcode_address_t -> Address)
-> IO (ForeignPtr C'netcode_address_t) -> IO Address
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr C'netcode_address_t -> IO (ForeignPtr C'netcode_address_t)
forall a. Ptr a -> IO (ForeignPtr a)
newForeignPtr_ Ptr C'netcode_address_t
aptr
ReceivePacketOverride
recvFn Address
addr Ptr Word8
pkt CInt
pktSize