Lighter-than-air, peer-to-peer, bounded, non-blocking, non-threaded, etc., publish-subscribe networking
Clone or download
eboasson Merge pull request #6 from eboasson/master
Automate builds on Travis CI
Latest commit 5d7844b Nov 15, 2018

Zeno-He (zhe for short) is a compact implementation of the Zenoh protocol that does not depend on dynamic allocation or threading. Instead, it is a non-blocking implementation that assumes single threaded use with polling, and a system that can be sized at compile time. Zhe can be configured to operate in peer-to-peer mode or to operate as a client that relies on a broker.

Targeted configurations vary from a minimal client on an Arduino Uno (an 8-bit CPU with only 2kB of RAM) to a bunch of low-power, high-integrity CPUs running a real-time, distributed control system, and on to dozens of peers running on high-end CPUs and saturating a fast network. Whether it will actually meet all these requirements remains to be seen. Still, so far, so good.

Zhe does not call any operating system functions directly (its use of the standard library is currently limited to mem*, strlen and isalnum). It does rely on a small abstraction layer for sending a message without blocking (it may of course be dropped), comparing addresses and converting an address to text. What constitutes sending data on a network or what an address looks like is deliberately left undefined.

Please note that it is currently a research project under active development. Only the basic functionality supported by the Zenoh protocol has so far been implemented, and still missing are several features we consider important, such as selections and transient data support. These will be implemented in the near future. Furthermore, none of the settings are final, and everything can (and probably will) still change.