kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

cas.h (2125B)


      1 #ifndef KIT_DIST_CAS_H
      2 #define KIT_DIST_CAS_H
      3 
      4 #include <kit/core.h>
      5 #include <stddef.h>
      6 #include <stdint.h>
      7 
      8 #include "dist.h"
      9 #include "tree.h"
     10 
     11 #define DIST_CAS_PATH_MAX 1024u
     12 
     13 typedef struct DistCasHost {
     14   const KitFileIO* file_io;
     15   int (*mkdir_p)(void* user, const char* path);
     16   int (*mark_executable)(void* user, const char* path);
     17   void* user;
     18 } DistCasHost;
     19 
     20 typedef struct DistCas {
     21   DistCasHost host;
     22   const char* root;
     23 } DistCas;
     24 
     25 int dist_cas_blob_path(char* out, size_t cap, const char* root,
     26                        const uint8_t blob[DIST_BLAKE2B_LEN]);
     27 int dist_cas_tree_path(char* out, size_t cap, const char* root,
     28                        const uint8_t tree[DIST_BLAKE2B_LEN]);
     29 int dist_cas_index_path(char* out, size_t cap, const char* root,
     30                         const uint8_t index[DIST_BLAKE2B_LEN]);
     31 int dist_cas_chunk_path(char* out, size_t cap, const char* root,
     32                         const uint8_t blob[DIST_BLAKE2B_LEN],
     33                         uint64_t chunk_index);
     34 int dist_cas_blob_relpath(char* out, size_t cap,
     35                           const uint8_t blob[DIST_BLAKE2B_LEN]);
     36 int dist_cas_tree_relpath(char* out, size_t cap,
     37                           const uint8_t tree[DIST_BLAKE2B_LEN]);
     38 int dist_cas_index_relpath(char* out, size_t cap,
     39                            const uint8_t index[DIST_BLAKE2B_LEN]);
     40 int dist_cas_chunk_relpath(char* out, size_t cap,
     41                            const uint8_t blob[DIST_BLAKE2B_LEN],
     42                            uint64_t chunk_index);
     43 int dist_cas_put_blob(DistCas* cas, const uint8_t blob[DIST_BLAKE2B_LEN],
     44                       const uint8_t* data, size_t len);
     45 int dist_cas_get_blob(DistCas* cas, const uint8_t blob[DIST_BLAKE2B_LEN],
     46                       KitFileData* out);
     47 int dist_cas_put_tree(DistCas* cas, const uint8_t tree[DIST_BLAKE2B_LEN],
     48                       const uint8_t* data, size_t len);
     49 int dist_cas_get_tree(DistCas* cas, const uint8_t tree[DIST_BLAKE2B_LEN],
     50                       KitFileData* out);
     51 int dist_cas_materialize_tree(DistCas* cas, const DistTree* tree,
     52                               const char* dst);
     53 
     54 #endif