Crate libqaul[][src]

This is the library that sits at the heart of

Fundamentally, it handles three types of interactions:

The two things provided by libqaul, that make it useful to other applications are Qaul, the primary data struct and API holder, plus the “service API” (implemented on Qaul) which gives a developer access to a qaul network.

The initilisation order for the libqaul stack is reverted.

  1. Hardware modules (netmod) for the appropriate platform
  2. RATMAN routing core, binding against available network interfaces
  3. (Optional) Platform specific storage shims for Alexandria
  4. Qaul internals, which sets up storage, encryption and user stores
  5. API shims such as the http-api which exposes the service API on a json:api schema
  6. UI threads: either initialise the web-frontend or your own application stack

libqaul handles user registration, sign-in and out, messaging, file-sharing, both encrypted and public communication, voice calls, as well as service hooks that mean that your applications can communicate with the existing services, and other instances running across a qaul network.

Additionally to providing the entire application stack, libqaul can also tunnel to other libqaul instances, depending on the platform. This means that your application might be shipping an entire copy of libqaul, but doesn’t have to be the network entry point. This initialisation option is available before starting network bindings.



A set of function specific API scopes in libqaul


Network user contact metadata and utilities


Error and Result handling


A set of API helpers


Network message types and utilities


Service interface utilities


Local user and session types



A generic object identifier


Primary context structure for libqaul

Type Definitions


An atomic reference counted pointer to a running libqaul instance