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 is funded by Corsis Research and used in:

PortFusion ]-[ayabusa – German research project for building the simplest high-performance distributed reverse / forward proxy.

https://sourceforge.net/p/portfusion/wiki/RoadMap/

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-11T03:23:56Z
Distributions LTSHaskell:0.6.1.1, NixOS:0.6.1.1, Stackage:0.6.1.1
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 10019 total (45 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]