This library provides a client for communication with a CaosDB server over the CaosDB GRPC-APIs. The client supports

  • Transaction of entities and file transmission.

  • Authentication via Username/Password.

  • Secure communication via TLS.

  • Multiple connections with different servers.

  • Logging.

  • File-based configuration.

The core is written in C++ and makes heavy use of object-oriented patterns. It results in a c++ library – libcaosdb.

For using the library in a plain C context, a thin wrapper is included – libccaosdb. It wrapps the C++ classes into structs and the member methods into functions which operate on the wrapped C++ instances.

Minimal testing executables in C++ and C are included as well, but they only serve as just that – minimal testing.

CaosDB Entitiy API

This library implements a subset of the CaosDB Entitiy API (caosdb.entity.v1) as a client.

Current limitations: The implementation does not support mixing retrievals with write-transactions.

CaosDB Info API

This library implements the CaosDB Info API (caosdb.info.v1) as a client without limitations.

CaosDB ACM (Access Control Management) API

This library implements small parts of the experimental ACM API (caosdb.acm.v1alpha1) as a client.

Thread-safety and Concurrency

Currently, the library should not be considered thread-safe.

The caosdb::transaction::Transaction class is designed with an with an interface ready for concurrent and asyncronous transactions. While it is possible to execute transactions in non-blocking mode and call GetStatus concurrently, it is not possible to use any of the non-const methods of the Transaction class in a thread-safe way.