X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fcloudlog.c;h=3809b00b0d8faf6ed59bff7ac7648de3a04f13ee;hb=97517d1bbc647846003d1a49b6ae97c69d856b90;hp=6e57d0533247d8241aca6fb36624f82fb49a6dbe;hpb=4a207da5eef9f87a702a011d003d5ad17b651085;p=bluesky.git diff --git a/bluesky/cloudlog.c b/bluesky/cloudlog.c index 6e57d05..3809b00 100644 --- a/bluesky/cloudlog.c +++ b/bluesky/cloudlog.c @@ -202,12 +202,21 @@ void bluesky_cloudlog_fetch(BlueSkyCloudLog *log) if (log->data != NULL) return; - g_assert((log->location_flags | log->pending_write) & CLOUDLOG_JOURNAL); - - bluesky_cloudlog_stats_update(log, -1); - log->data = bluesky_log_map_object(log->fs->log, log->log_seq, - log->log_offset, log->log_size); - bluesky_cloudlog_stats_update(log, 1); + if ((log->location_flags | log->pending_write) & CLOUDLOG_JOURNAL) { + bluesky_cloudlog_stats_update(log, -1); + log->data = bluesky_log_map_object(log->fs, -1, log->log_seq, + log->log_offset, log->log_size); + bluesky_cloudlog_stats_update(log, 1); + } else if (log->location_flags & CLOUDLOG_CLOUD) { + bluesky_cloudlog_stats_update(log, -1); + log->data = bluesky_log_map_object(log->fs, log->location.directory, + log->location.sequence, + log->location.offset, + log->location.size); + bluesky_cloudlog_stats_update(log, 1); + } else { + g_error("Unable to fetch cloudlog entry!"); + } g_cond_broadcast(log->cond); } @@ -234,11 +243,13 @@ BlueSkyCloudPointer bluesky_cloudlog_serialize(BlueSkyCloudLog *log, bluesky_cloudlog_stats_update(log, -1); + /* TODO: Right now offset/size are set to the raw data, but we should add + * header parsing to the code which loads objects back in. */ log->location = state->location; - log->location.offset = state->data->len; - log->location.size - = sizeof(struct log_header) + sizeof(BlueSkyCloudID) * 0 - + log->data->len; + log->location.offset = state->data->len + sizeof(struct log_header); + log->location.size = log->data->len; + /* = sizeof(struct log_header) + sizeof(BlueSkyCloudID) * 0 + + log->data->len; */ struct log_header header; memcpy(header.magic, "AgI ", 4); @@ -277,7 +288,7 @@ void bluesky_cloudlog_flush(BlueSkyFS *fs) state->location.sequence); async->data = bluesky_string_new_from_gstring(state->data); bluesky_store_async_submit(async); - bluesky_store_async_wait(async); + //bluesky_store_async_wait(async); bluesky_store_async_unref(async); state->location.sequence++;