splice: Socket to Socket Data Splicing
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
Flags
Automatic Flags
Name | Description | Default |
---|---|---|
portable | explicitly enable portable splice implemented in Haskell | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- splice-0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.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 |
---|---|
Dependencies | base (>=4 && <=6), network (>=2 && <=4), unix (>=2 && <=4) [details] |
License | BSD-3-Clause |
Copyright | Copyright © 2012 Cetin Sert |
Author | Cetin Sert <fusion@corsis.eu> |
Maintainer | Cetin Sert <fusion@corsis.eu> |
Category | Network |
Home page | http://fusion.corsis.eu |
Uploaded | by CetinSert at 2012-04-10T19:55:40Z |
Distributions | LTSHaskell:0.6.1.1, NixOS:0.6.1.1, Stackage:0.6.1.1 |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 10213 total (38 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |