The splice package

[Tags: bsd3, library]

A library that implements efficient socket to socket data transfer loops for proxy servers.

On Linux, it uses the zero-copy splice() system call: http://kerneltrap.org/node/6505.

On all other operating systems, it currently falls back to a portable Haskell implementation that allocates a constant-sized memory buffer before it enters an inner loop which then uses hGetBufSome and hPutBuf; this avoids lots of tiny allocations as would otherwise be caused by recv and sendAll functions from Network.Socket.ByteString.

This work has been funded by Corsis Research and is used in PortFusion: http://portfusion.sf.net


Properties

Versions0.1, 0.2, 0.3, 0.3.1, 0.3.2, 0.4, 0.5, 0.5.1, 0.6, 0.6.0.2, 0.6.1, 0.6.1.1
Dependenciesbase (>=4 && <=6), network (>=2 && <=4)
LicenseBSD3
CopyrightCopyright © 2012 Cetin Sert
AuthorCetin Sert <fusion@corsis.eu>
MaintainerCetin Sert <fusion@corsis.eu>
Stabilitystable on Linux, experimental on other operating systems
CategoryNetwork
Home pagehttp://fusion.corsis.eu
UploadedTue Apr 10 19:55:40 UTC 2012 by CetinSert
Downloads1112 total (72 in last 30 days)
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Flags

NameDescriptionDefault
portableexplicitly enable portable splice implemented in HaskellDisabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees