Make kvstore backend in BlueSky asynchronous.
[bluesky.git] / bluesky / bluesky-private.h
index d5e5d4f..320886c 100644 (file)
@@ -27,7 +27,7 @@ BlueSkyFS *bluesky_new_fs(gchar *name);
 void bluesky_serialize_superblock(GString *out, BlueSkyFS *fs);
 BlueSkyFS *bluesky_deserialize_superblock(const gchar *buf);
 void bluesky_serialize_inode(GString *out, BlueSkyInode *inode);
-BlueSkyInode *bluesky_deserialize_inode(BlueSkyFS *fs, const gchar *buf);
+gboolean bluesky_deserialize_inode(BlueSkyInode *inode, const gchar *buf);
 
 /* Storage layer.  Requests can be performed asynchronously, so these objects
  * help keep track of operations in progress. */
@@ -64,6 +64,8 @@ typedef struct {
     int result;                 /* Result code; 0 for success. */
     struct BlueSkyNotifierList *notifiers;
 
+    bluesky_time_hires start_time;  /* Time operation was submitted. */
+
     gpointer store_private;     /* For use by the storage implementation */
 } BlueSkyStoreAsync;
 
@@ -98,6 +100,7 @@ void bluesky_store_register(const BlueSkyStoreImplementation *impl,
                             const gchar *name);
 
 BlueSkyStoreAsync *bluesky_store_async_new(BlueSkyStore *store);
+gpointer bluesky_store_async_get_handle(BlueSkyStoreAsync *async);
 void bluesky_store_async_ref(BlueSkyStoreAsync *async);
 void bluesky_store_async_unref(BlueSkyStoreAsync *async);
 void bluesky_store_async_wait(BlueSkyStoreAsync *async);
@@ -115,6 +118,7 @@ void bluesky_inode_start_sync(BlueSkyInode *inode, BlueSkyStoreAsync *barrier);
 void bluesky_block_flush(BlueSkyFS *fs, BlueSkyBlock *block,
                          BlueSkyStoreAsync *barrier);
 void bluesky_file_flush(BlueSkyInode *inode, BlueSkyStoreAsync *barrier);
+void bluesky_file_drop_cached(BlueSkyInode *inode);
 
 #ifdef __cplusplus
 }