BlueSkyCloudLog *bluesky_serialize_inode(BlueSkyInode *inode);
gboolean bluesky_deserialize_inode(BlueSkyInode *inode, BlueSkyCloudLog *item);
+void bluesky_deserialize_cloudlog(BlueSkyCloudLog *item,
+ const char *data,
+ size_t len);
+
void bluesky_serialize_cloudlog(BlueSkyCloudLog *log,
GString *encrypted,
GString *authenticated,
/* Clean up any implementation-private data in a BlueSkyStoreAsync. */
void (*cleanup)(gpointer store, BlueSkyStoreAsync *async);
+
+ /* Find the lexicographically-largest file starting with the specified
+ * prefix. */
+ char * (*lookup_last)(gpointer store, const gchar *prefix);
} BlueSkyStoreImplementation;
void bluesky_store_register(const BlueSkyStoreImplementation *impl,
const gchar *name);
+char *bluesky_store_lookup_last(BlueSkyStore *store, const char *prefix);
BlueSkyStoreAsync *bluesky_store_async_new(BlueSkyStore *store);
gpointer bluesky_store_async_get_handle(BlueSkyStoreAsync *async);
void bluesky_store_async_ref(BlueSkyStoreAsync *async);
LOGTYPE_INODE = 2,
LOGTYPE_INODE_MAP = 3,
LOGTYPE_CHECKPOINT = 4,
- LOGTYPE_CHECKPOINT_PTR = 5,
} BlueSkyCloudLogType;
/* Headers that go on items in local log segments and cloud log segments. */
int action);
BlueSkyCloudLog *bluesky_inode_map_serialize(BlueSkyFS *fs);
+gboolean bluesky_checkpoint_load(BlueSkyFS *fs);
+
#ifdef __cplusplus
}
#endif