packages feed

henet-1.3.8.0: src/Network/ENet/Peer.hs

module Network.ENet.Peer where

import Foreign
import Foreign.C.Error
import Foreign.C.Types

import Network.Socket(SockAddr)

import Network.ENet.Internal
import qualified Network.ENet.Bindings as B

send :: Ptr B.Peer -> B.ChannelID -> Ptr B.Packet -> IO ()
send peer cID packet = do _ <- throwErrnoIf
                               (/=0)
                               "could not send packet"
                               $ B.peerSend peer cID packet
                          return ()

receive :: Ptr B.Peer -> B.ChannelID -> IO (Maybe (Ptr B.Packet))
receive peer cID = do ptr <- B.peerReceive peer cID
                      return $ if ptr == nullPtr
                               then Nothing
                               else Just ptr

ping :: Ptr B.Peer -> IO ()
ping = B.peerPing

pingInterval :: Ptr B.Peer -> Word32 -> IO ()
pingInterval = B.peerPingInterval

timeout :: Ptr B.Peer -> Word32 -> Word32 -> Word32 -> IO ()
timeout = B.peerTimeout

reset :: Ptr B.Peer -> IO ()
reset = B.peerReset

disconnect :: Ptr B.Peer -> Word32 -> IO ()
disconnect = B.peerDisconnect

disconnectNow :: Ptr B.Peer -> Word32 -> IO ()
disconnectNow = B.peerDisconnectNow

disconnectLater :: Ptr B.Peer -> Word32 -> IO ()
disconnectLater = B.peerDisconnectLater

throttleConfigure :: Ptr B.Peer -> Word32 -> Word32 -> Word32 -> IO ()
throttleConfigure = B.peerThrottleConfigure