libunixonacid
libskarnet
skalibs
Software
skarnet.org

# The `skaclient` library interface

The following functions are declared in the `skalibs/skaclient.h` header, and implemented in the `libskarnet.a` or `libskarnet.so` library.

## General information

`skaclient` is a client-server initiation protocol framework, allowing a process (the "client") to either connect to another process (the "server") via a Unix domain socket, or spawn such a "server" process itself. The client and the server then communicate via two sockets, one for synchronous data, the other for asynchronous data; they exchange unixmessages.

The `skaclient` framework is used in several places in skarnet.org software, whenever a server can send asynchronous data to its client. For instance:

- Communication between notification subscribers such as s6-ftrig-wait and their own s6-ftrigrd daemon
- Communication between clients of the s6lock library and a s6lockd server
- Communication between a client such as s6-dnsip4-filter, in need of asynchronous DNS service, and its own skadnsd daemon
- The skabus Unix bus infrastructure is entirely based on the skaclient framework to transmit unixmessages across processes.

## Programming

FIXME: to be completed.