uniform-io-1.1.1.0: Uniform IO over files, network, anything.

Safe HaskellSafe-Inferred
LanguageHaskell2010

System.IO.Uniform

Description

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.

Synopsis

Documentation

class UniformIO a where Source

Typeclass for uniform IO targets.

Methods

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.

Must thow System.IO.Error.EOFError if reading beihond EOF.

uPut :: a -> ByteString -> IO () Source

uPut fd text

Writes all the bytes of text into the IO target. Takes care of retrying if needed.

uClose :: a -> IO () Source

fClose fd

Closes the IO target, releasing any allocated resource. Resources may leak if not called for every oppened fd.

startTls :: TlsSettings -> a -> IO a Source

startTLS fd

Starts a TLS connection over the IO target.

isSecure :: a -> Bool Source

isSecure fd

Indicates whether the data written or read from fd is secure at transport.

Instances

UniformIO StdIO

UniformIO that reads from stdin and writes to stdout.

UniformIO FileIO

UniformIO type for file IO.

UniformIO SocketIO

UniformIO IP connections.

UniformIO SomeIO 
UniformIO ByteStringIO 

data TlsSettings Source

Settings for starttls functions.

data SomeIO Source

A type that wraps any type in the UniformIO class.

Constructors

forall a . UniformIO a => SomeIO a 

Instances

mapOverInput :: forall a io. UniformIO io => io -> Int -> (a -> ByteString -> IO a) -> a -> IO a Source

mapOverInput io block_size f initial

Reads io untill the end of file, evaluating a(i) <- f a(i-1) read_data where a(0) = initial and the last value after io reaches EOF is returned.

Notice that the length of read_data might not be equal block_size.