splice: Socket to Socket Data Splicing

[ bsd3, library, network, system ] [ Propose Tags ]

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

Modules

[Index]

Flags

Automatic Flags
NameDescriptionDefault
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

Maintainer's Corner

Package maintainers

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]