aboutsummaryrefslogblamecommitdiff
path: root/nerv/lib/io/chunk_file.h
blob: f08d8386be954aeac45691d82f5da5666088f84b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13

                         
                      









                           




                 







                                          






                                                                               


                                             
      
#ifndef NERV_CHUNK_FILE_H
#define NERV_CHUNK_FILE_H
#include "../common.h"

typedef struct ChunkInfo {
    struct ChunkInfo *next;
    char *metadata;
    off_t offset, length;
} ChunkInfo;

typedef struct ChunkFile {
    FILE *fp;
    ChunkInfo *info;
    enum {
        CF_READ,
        CF_WRITE,
        CF_CLOSED
    } status;
} ChunkFile;

typedef struct ChunkData {
    FILE *fp;
    char *data;
} ChunkData;

typedef void (*ChunkDataWriter_t)(void *);
ChunkFile *nerv_chunk_file_create(const char *fn, const char *mode,
                                Status *status);
void nerv_chunk_file_write_chunkdata(ChunkFile *cfp, const char *mdstr,
                                    ChunkDataWriter_t writer, void *writer_arg,
                                    Status *status);
ChunkData *nerv_chunk_file_get_chunkdata(ChunkFile *cfp, ChunkInfo *cip,
                                        Status *status);
void nerv_chunk_file_close(ChunkFile *cfp);
void nerv_chunk_file_destroy(ChunkFile *cfp);
void nerv_chunk_data_destroy(ChunkData *cdp);
#endif