[][src]Crate libqaul

This is the library that sits at the heart of qaul.net.

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 qaul.net 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.

Modules

api

A set of function specific API scopes in libqaul

contacts

Network user contact metadata and utilities

error

Error and Result handling

helpers

A set of API helpers

messages

Network message types and utilities

services

Service interface utilities

users

Local user and session types

Structs

Identity

A generic object identifier

Qaul

Primary context structure for libqaul

Type Definitions

QaulRef

An atomic reference counted pointer to a running libqaul instance