socket-0.8.0.1: An extensible socket library.

Copyright(c) Lars Petersen 2015
LicenseMIT
Maintainerinfo@lars-petersen.net
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

System.Socket.Type.Stream

Contents

Description

 

Synopsis

Stream

data Stream Source #

Instances

Specialized send operations

sendAll

sendAll :: Socket f Stream p -> ByteString -> MessageFlags -> IO Int Source #

Sends a whole ByteString with as many system calls as necessary and returns the bytes sent (in this case just the ByteStrings length).

sendAllLazy

sendAllLazy :: Socket f Stream p -> ByteString -> MessageFlags -> IO Int64 Source #

Like sendAll, but operates on lazy ByteStrings.

It uses sendAll internally to send all chunks sequentially. The lock on the socket is acquired for each chunk separately, so the socket can be read from in an interleaving fashion.

sendAllBuilder

sendAllBuilder :: Socket f Stream p -> Int -> Builder -> MessageFlags -> IO Int64 Source #

Sends a whole Builder without allocating ByteStrings. If performance is an issue, this operation should be preferred over all other solutions for sending stream data.

The operation allocates a single buffer of the given size on entry and reuses this buffer until the whole Builder has been sent. The count of all bytes sent is returned as there is no other efficient way to determine a Builders size without actually building it.

Specialized receive operations

receiveAll

receiveAll :: Socket f Stream p -> Int64 -> MessageFlags -> IO ByteString Source #

Like receive, but operates on lazy ByteStrings and continues until either an empty part has been received (peer closed the connection) or given buffer limit has been exceeded or an exception occured.

  • The Int64 parameter is a soft limit on how many bytes to receive. Collection is stopped if the limit has been exceeded. The result might be up to one internal buffer size longer than the given limit. If the returned ByteStrings length is lower or eqal than the limit, the data has not been truncated and the transmission is complete.