very fast at protocol indexer with flexible filtering, xrpc queries, cursor-backed event stream, and more, built on fjall
rust fjall at-protocol atproto indexer
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142#ifndef HYDRANT_H#define HYDRANT_H
/* run hydrant inside another program. hydrant serves its usual http api, ideally on a * `unix:` bind, and the embedder talks to it over that. see ffi/src/lib.rs for details. */
#include <stdint.h>
#ifdef __cplusplusextern "C" {#endif
typedef struct HydrantHandle hydrant_t;
/* starts hydrant from a json object of the HYDRANT_* settings the binary reads from its * environment, plus RUST_LOG. HYDRANT_API_BIND is required, and `none` runs without an api. * returns NULL and sets *err on failure. ignore SIGPIPE before calling this, the way * rust binaries do at startup, or a write to a socket whose peer left kills the process. */hydrant_t *hydrant_start(const char *settings_json, char **err);
/* blocks until hydrant stops. returns -1 with *err set when it failed, or 0 once hydrant_shutdown * stopped it. a failed hydrant still holds its database until hydrant_shutdown. */int hydrant_wait(const hydrant_t *handle, char **err);
/* stops hydrant and waits up to timeout_ms for its database to close, so its memory is * given back and hydrant_start can open the same database again. returns -1 with *err set * if it's still open after that, or if it was already shut down. */int hydrant_shutdown(const hydrant_t *handle, uint64_t timeout_ms, char **err);
/* frees a handle, telling it to stop first if hydrant_shutdown wasn't called. nothing may * still be blocked in hydrant_wait on it. */void hydrant_free(hydrant_t *handle);
/* frees an error string from this library. */void hydrant_free_string(char *s);
#ifdef __cplusplus}#endif
#endif