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 is funded by Corsis Research and used in:
PortFusion ]-[ayabusa – German research project for building the simplest high-performance distributed reverse / forward proxy.
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.2.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] |
| Tested with | ghc >=7.4.3 |
| License | BSD-3-Clause |
| Copyright | Copyright © 2012 Cetin Sert |
| Author | Cetin Sert <fusion@corsis.eu> |
| Maintainer | Cetin Sert <fusion@corsis.eu> |
| Uploaded | by CetinSert at 2012-04-11T03:23:56Z |
| Category | Network |
| Home page | http://fusion.corsis.eu |
| Distributions | LTSHaskell:0.6.1.1, NixOS:0.6.1.1, Stackage:0.6.1.1 |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Downloads | 10587 total (17 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] |