projects
/
bluesky.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make kvstore backend in BlueSky asynchronous.
[bluesky.git]
/
bluesky
/
store.c
diff --git
a/bluesky/store.c
b/bluesky/store.c
index
7a63b04
..
8cf9f0e
100644
(file)
--- a/
bluesky/store.c
+++ b/
bluesky/store.c
@@
-88,6
+88,11
@@
BlueSkyStoreAsync *bluesky_store_async_new(BlueSkyStore *store)
return async;
}
return async;
}
+gpointer bluesky_store_async_get_handle(BlueSkyStoreAsync *async)
+{
+ return async->store->handle;
+}
+
void bluesky_store_async_ref(BlueSkyStoreAsync *async)
{
if (async == NULL)
void bluesky_store_async_ref(BlueSkyStoreAsync *async)
{
if (async == NULL)
@@
-215,6
+220,7
@@
static void op_complete(gpointer a, gpointer b)
{
BlueSkyStoreAsync *barrier = (BlueSkyStoreAsync *)b;
{
BlueSkyStoreAsync *barrier = (BlueSkyStoreAsync *)b;
+ bluesky_store_async_ref(barrier);
g_mutex_lock(barrier->lock);
barrier->store_private
= GINT_TO_POINTER(GPOINTER_TO_INT(barrier->store_private) - 1);
g_mutex_lock(barrier->lock);
barrier->store_private
= GINT_TO_POINTER(GPOINTER_TO_INT(barrier->store_private) - 1);
@@
-223,6
+229,7
@@
static void op_complete(gpointer a, gpointer b)
bluesky_store_async_mark_complete(barrier);
}
g_mutex_unlock(barrier->lock);
bluesky_store_async_mark_complete(barrier);
}
g_mutex_unlock(barrier->lock);
+ bluesky_store_async_unref(barrier);
}
/* Add the given operation to the barrier. The barrier will not complete until
}
/* Add the given operation to the barrier. The barrier will not complete until
@@
-395,10
+402,12
@@
static void filestore_submit(gpointer s, BlueSkyStoreAsync *async)
switch (async->op) {
case STORE_OP_GET:
async->data = filestore_get(async->key);
switch (async->op) {
case STORE_OP_GET:
async->data = filestore_get(async->key);
+ async->result = 0;
break;
case STORE_OP_PUT:
filestore_put(async->key, async->data);
break;
case STORE_OP_PUT:
filestore_put(async->key, async->data);
+ async->result = 0;
break;
default:
break;
default: