Safe Haskell | None |
---|---|
Language | Haskell2010 |
Uniform-IO provides a typeclass for uniform access of different types of targets, and implementations for abstracting standard streams, files and network connections. This module also provides TLS wraping over other IO targets.
- data TlsSettings = TlsSettings {}
- class UniformIO a where
- uRead :: a -> Int -> IO ByteString
- uPut :: a -> ByteString -> IO ()
- uClose :: a -> IO ()
- startTls :: TlsSettings -> a -> IO TlsStream
- isSecure :: a -> Bool
- data SocketIO
- data FileIO
- data StdIO
- data TlsStream
- data BoundedPort
- data SomeIO = forall a . UniformIO a => SomeIO a
- connectTo :: IP -> Int -> IO SocketIO
- connectToHost :: String -> Int -> IO SocketIO
- bindPort :: Int -> IO BoundedPort
- accept :: BoundedPort -> IO SocketIO
- openFile :: String -> IO FileIO
- getPeer :: SocketIO -> IO (IP, Int)
- closePort :: BoundedPort -> IO ()
Documentation
class UniformIO a where Source
Typeclass for uniform IO targets.
uRead :: a -> Int -> IO ByteString Source
uRead fd n
Reads a block of at most n bytes of data from the IO target. Reading will block if there's no data available, but will return immediately if any amount of data is availble.
uPut :: a -> ByteString -> IO () Source
uPut fd text
Writes all the bytes of text into the IO target. Takes care of retrying if needed.
fClose fd
Closes the IO target, releasing any allocated resource. Resources may leak if not called for every oppened fd.
startTls :: TlsSettings -> a -> IO TlsStream Source
startTLS fd
Starts a TLS connection over the IO target.
isSecure fd
Indicates whether the data written or read from fd is secure at transport.
data BoundedPort Source
A bounded IP port from where to accept SocketIO connections.
A type that wraps any type in the UniformIO class.
connectTo :: IP -> Int -> IO SocketIO Source
ConnecctTo ipAddress port
Connects to the given port of the host at the given IP address.
connectToHost :: String -> Int -> IO SocketIO Source
connectToHost hostName port
Connects to the given host and port.
bindPort :: Int -> IO BoundedPort Source
bindPort port Binds to the given IP port, becoming ready to accept connections on it. Binding to port numbers under 1024 will fail unless performed by the superuser, once bounded, a process can reduce its privileges and still accept clients on that port.
accept :: BoundedPort -> IO SocketIO Source
accept port
Accept clients on a port previously bound with bindPort.
getPeer :: SocketIO -> IO (IP, Int) Source
Gets the address of the peer socket of a internet connection.
closePort :: BoundedPort -> IO () Source
Closes a BoundedPort, and releases any resource used by it.