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>
44 lines
1.6 KiB
C
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
|