packages feed

winio-0.1: Network/Socket/Compat.hs

{- |
   Module      : Network.Socket.Compat
   Copyright   : 2009 Felix Martini
   License     : BSD-style (see LICENSE for license terms)

   Maintainer  : felix@felixmartini.com
   Stability   : Experimental

   Functions in this module are compatible with functions in the
   Network.Socket module but use I/O functions from the winio package.
-}

module Network.Socket.Compat where

import Network.Socket (Family, ProtocolNumber, Socket, SocketType, SockAddr)
import qualified Network.Socket as Socket
import qualified System.Windows.IO as IO

socket :: Family -> SocketType -> ProtocolNumber -> IO Socket
socket fam sock_type proto_num = do
    sock <- Socket.socket fam sock_type proto_num
    IO.associateSocketWithPort sock
    return sock

accept :: Socket -> IO (Socket, SockAddr)
accept sock = do
    (client_sock, client_addr) <- Socket.accept sock
    IO.associateSocketWithPort client_sock
    return (client_sock, client_addr)