1 #ifndef OBJ_BACKEND_H
2 #define OBJ_BACKEND_H
3 
4 #include <glib.h>
5 #include "obj-store.h"
6 
7 typedef struct ObjBackend ObjBackend;
8 
9 struct ObjBackend {
10     int         (*read) (ObjBackend *bend,
11                          const char *repo_id,
12                          int version,
13                          const char *obj_id,
14                          void **data,
15                          int *len);
16 
17     int         (*write) (ObjBackend *bend,
18                           const char *repo_id,
19                           int version,
20                           const char *obj_id,
21                           void *data,
22                           int len,
23                           gboolean need_sync);
24 
25     gboolean    (*exists) (ObjBackend *bend,
26                            const char *repo_id,
27                            int version,
28                            const char *obj_id);
29 
30     void        (*delete) (ObjBackend *bend,
31                            const char *repo_id,
32                            int version,
33                            const char *obj_id);
34 
35     int         (*foreach_obj) (ObjBackend *bend,
36                                 const char *repo_id,
37                                 int version,
38                                 SeafObjFunc process,
39                                 void *user_data);
40 
41     int         (*copy) (ObjBackend *bend,
42                          const char *src_repo_id,
43                          int src_version,
44                          const char *dst_repo_id,
45                          int dst_version,
46                          const char *obj_id);
47 
48     int        (*remove_store) (ObjBackend *bend,
49                                 const char *store_id);
50 
51     void *priv;
52 };
53 
54 #endif
55