henet: Bindings and high level interface for to ENet v1.3.9
ENet is a networking library on top of UDP. In it's own words:
"ENet's purpose is to provide a relatively thin, simple and robust network communication layer on top of UDP (User Datagram Protocol). The primary feature it provides is optional reliable, in-order delivery of packets.
ENet omits certain higher level networking features such as authentication, lobbying, server discovery, encryption, or other similar tasks that are particularly application specific so that the library remains flexible, portable, and easily embeddable."
This library contains both bindings and a slightly cleaned up interface on
top. The bindings are as close to the original as possible. Names are striped
of the leading enet_
and converted to CamelCase, and the occasional newtype
is used instead, but otherwise all functions signatures are exactly the
same. The bindings are in Network.ENet.Bindings
.
The higher level interface is all other exposed modules. Functions like
'enet_host_*' are placed in Network.ENet.Host
. All functions are present
except for the 'enet_socket*' functions: they are just wrappers of the Posix
Sockets Interface, which is already provided in Haskell by the network
package. Changes are fairly minimal: "Out-Args" are now returned with a tuple,
conversions between C and Haskell types happen automatically (when Haskell
versions exists), and nullable pointer types have been replaced with
Maybes. In short, there should be very few reasons to use the raw bindings
over the "nice" interface.
At the moment, consult the ENet website for documentation. In the vast majority of cases the documentation there should apply here exactly, I will try to add Haddock documentation for everywhere it does not.
ENet currently only supports IPv4 at the moment (though that should soon
change), and must be called from only one bound thread (i.e. thread created
with forkOS
). Richer native networking libraries leveraging Haskell's
strengths exist, and for new projects I'd recommend those. But for interfacing
with existing protocols using ENet, this package should be quite useful.
Modules
- Network
- Network.ENet
- Network.ENet.Bindings
- Network.ENet.Host
- Network.ENet.Packet
- Network.ENet.Peer
- Network.ENet
Downloads
- henet-1.3.9.3.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] | 1.3.8.0, 1.3.8.1, 1.3.8.1.1, 1.3.9.0, 1.3.9.1, 1.3.9.2, 1.3.9.3 |
---|---|
Dependencies | base (>=3 && <5), bitset (>=1.4.7), bytestring (>=0.10), network (>=2.4.1), typesafe-endian (>=0.1 && <0.2) [details] |
License | MIT |
Author | John Ericson |
Maintainer | Ericson2314@Yahoo.com |
Category | Network, FFI |
Bug tracker | https://github.com/Ericson2314/henet/issues |
Source repo | head: git clone git://github.com/Ericson2314/henet.git |
Uploaded | by JohnEricson at 2013-09-04T04:03:21Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 5441 total (33 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs not available [build log] Last success reported on 2015-05-19 [all 8 reports] |