- STUN/TURN/MS-TURN protocol reader/writer (in progress)
- Type-safe:
- different protocol messages should be distinct types, cross-protocol mixups prevented at compile-time
- attributes should be distinct types e.g. compiler should prevent application developer treating LIFETIME attribute as string but enforce std::chrono::seconds, etc.
- No allocations:
- extracting protocol level information from incoming networking datagram should not do any allocations
- Zero-copy:
- querying memory blob kind of attributes from messages should return std::span into original networking datagram
- Type-safe:
- Client & server as library (TODO)
- Implement OS independent pure business logic layer that provides hooks/callbacks for applications that implement actual syscalls (networking I/O, logging, monitoring, etc.)
- Provide hooks to introduce artificial delays within business logic to support testing/debugging threading issues
- Cross-platform relay (TODO)
- Create actual application providing syscalls for relay implemented in library scope
$ mkdir build && cd build
$ cmake .. [-Dturner_test=yes|no] [-Dturner_doc=yes|no] [-Dturner_samples=yes|no]
$ make && make test && make install
The source tree is organised as follows:
. Root of source tree
|- turner Library ...
| `- module ... per module headers/sources/tests
|- cmake CMake modules
|- pal OS abstraction helper library
`- samples Sample applications using Turner library