network-2.3.2.1: Low-level networking interface

Copyright(c) The University of Glasgow 2001
LicenseBSD-style (see the file libraries/network/LICENSE)
Maintainerlibraries@haskell.org
Stabilityprovisional
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Network.Socket.Internal

Contents

Description

A module containing semi-public Socket internals. Modules which extend the Socket module will need to use this module while ideally most users will be able to make do with the public interface.

Synopsis

Socket addresses

type HostAddress = Word32 Source #

Network byte order.

type HostAddress6 = (Word32, Word32, Word32, Word32) Source #

Host byte order.

peekSockAddr :: Ptr SockAddr -> IO SockAddr Source #

Read a SockAddr from the given memory location.

pokeSockAddr :: Ptr a -> SockAddr -> IO () Source #

Write the given SockAddr to the given memory location.

sizeOfSockAddr :: SockAddr -> Int Source #

Computes the storage requirements (in bytes) of the given SockAddr. This function differs from sizeOf in that the value of the argument is used.

sizeOfSockAddrByFamily :: Family -> Int Source #

Computes the storage requirements (in bytes) required for a SockAddr with the given Family.

withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO a Source #

Use a SockAddr with a function requiring a pointer to a SockAddr and the length of that SockAddr.

withNewSockAddr :: Family -> (Ptr SockAddr -> Int -> IO a) -> IO a Source #

Create a new SockAddr for use with a function requiring a pointer to a SockAddr and the length of that SockAddr.

Protocol families

Socket error functions

throwSocketError Source #

Arguments

:: String

textual description of the error location

-> IO a 

Throw an IOError corresponding to the current socket error.

Guards for socket operations that may fail

throwSocketErrorIfMinus1_ Source #

Arguments

:: (Eq a, Num a) 
=> String

textual description of the location

-> IO a

the IO operation to be executed

-> IO () 

Throw an IOError corresponding to the current socket error if the IO action returns a result of -1. Discards the result of the IO action after error handling.

throwSocketErrorIfMinus1Retry Source #

Arguments

:: (Eq a, Num a) 
=> String

textual description of the location

-> IO a

the IO operation to be executed

-> IO a 

Throw an IOError corresponding to the current socket error if the IO action returns a result of -1, but retries in case of an interrupted operation.

throwSocketErrorIfMinus1RetryMayBlock Source #

Arguments

:: (Eq a, Num a) 
=> String

textual description of the location

-> IO b

action to execute before retrying if an immediate retry would block

-> IO a

the IO operation to be executed

-> IO a 

Throw an IOError corresponding to the current socket error if the IO action returns a result of -1, but retries in case of an interrupted operation. Checks for operations that would block and executes an alternative action before retrying in that case.

Initialization

withSocketsDo :: IO a -> IO a Source #

On Windows operating systems, the networking subsystem has to be initialised using withSocketsDo before any networking operations can be used. eg.

main = withSocketsDo $ do {...}

Although this is only strictly necessary on Windows platforms, it is harmless on other platforms, so for portability it is good practice to use it all the time.

Low-level helpers

zeroMemory :: Ptr a -> CSize -> IO () Source #

Zero a structure.

Orphan instances