pea2pea
pea2pea is a P2P library designed with the following use cases in mind:
- simple and quick creation of custom P2P networks
- testing/verifying network protocols
- benchmarking and stress-testing P2P nodes (or other network entities)
- substituting other, "heavier" nodes in local network tests
goals
- small, simple codebase: the core library is under 1k LOC and there are few dependencies
- ease of use: few objects and traits, no "turboeels" or generics/references forcing all parent objects to adapt
- correctness: no
unsafe
code; there's more code intests
than in the actual library - interoperability: strives to be as versatile as possible without sacrificing simplicity and ease of use
- good performance: over 10GB/s in favorable scenarios, small memory footprint
non-goals
no_std
- becoming a framework
- support for multiple
async
runtimes (it should be simple enough to change it, though) - any functionality that can be introduced "on top" (e.g. DHT, advanced topology formation algorithms etc.)
how to use it
- define a clonable struct containing a
Node
and any extra state you'd like to carry impl Pea2Pea
for it- make it implement any/all of the protocols
- create that struct (or as many of them as you like)
- enable protocols you'd like the node(s) to utilize
That's it!