Files
dat-thang/extra/dat-dpi/inc/sleep_feed.h
T
divorce b735900f2e 0.0.002
ddat interop with dat js
cable interop with cabal js
ddat's frontend = dat-thang
cable fe = cable-thang
dillo support based on cel's dillo-dat
bootstrap node
xplatform support

Signed-off-by: divo <418@cryspace.space>
2026-10-19 00:17:02 -04:00

44 lines
1.6 KiB
C

#ifndef SLEEP_FEED_H
#define SLEEP_FEED_H
#include <stddef.h>
#include <stdint.h>
#include "keys.h"
typedef struct sleep_feed {
char directory[1024];
char name[64];
uint8_t **blocks;
size_t *lengths;
uint8_t **proofs;
size_t *proof_lengths;
size_t length;
size_t capacity;
sleep_keypair_t keypair;
int writable;
int dirty;
int remote_only;
int persist_remote;
} sleep_feed_t;
int sleep_feed_open(sleep_feed_t *feed, const char *directory, const char *name,
const sleep_keypair_t *keypair);
/* Opens an in-memory, read-only feed replica using only its public key. */
int sleep_feed_open_remote(sleep_feed_t *feed, const char *directory,
const char *name, const uint8_t public_key[32]);
/* Merge verified cached remote blocks and persist subsequent received blocks. */
int sleep_feed_load_remote(sleep_feed_t *feed, const uint8_t public_key[32]);
size_t sleep_feed_length(const sleep_feed_t *feed);
int sleep_feed_read(const sleep_feed_t *feed, size_t index, uint8_t **data, size_t *length);
int sleep_feed_append(sleep_feed_t *feed, const uint8_t *data, size_t length);
/* Keeps already verified remote blocks and proofs in this session's memory. */
int sleep_feed_append_remote(sleep_feed_t *feed, size_t index,
const uint8_t *data, size_t length,
const uint8_t *proof, size_t proof_length);
int sleep_feed_truncate(sleep_feed_t *feed, size_t length);
int sleep_feed_has(const sleep_feed_t *feed, size_t index);
int sleep_feed_byte_offset(const sleep_feed_t *feed, size_t index,
uint64_t *offset);
int sleep_feed_flush(sleep_feed_t *feed);
void sleep_feed_close(sleep_feed_t *feed);
#endif