static void send_commit (CcnetProcessor *processor, const char *object_id) { char *data; int len; ObjectPack *pack = NULL; int pack_size; if (seaf_obj_store_read_obj (seaf->commit_mgr->obj_store, object_id, (void**)&data, &len) < 0) { g_warning ("Failed to read commit %s.\n", object_id); goto fail; } pack_size = sizeof(ObjectPack) + len; pack = malloc (pack_size); memcpy (pack->id, object_id, 41); memcpy (pack->object, data, len); ccnet_processor_send_update (processor, SC_OBJECT, SS_OBJECT, (char *)pack, pack_size); seaf_debug ("Send commit %.8s.\n", object_id); g_free (data); free (pack); return; fail: ccnet_processor_send_update (processor, SC_NOT_FOUND, SS_NOT_FOUND, object_id, 41); ccnet_processor_done (processor, FALSE); }
static gboolean send_fs_object (CcnetProcessor *processor, char *object_id) { char *data; int len; ObjectPack *pack = NULL; int pack_size; if (seaf_obj_store_read_obj (seaf->fs_mgr->obj_store, object_id, (void**)&data, &len) < 0) { seaf_warning ("Failed to read fs object %s.\n", object_id); goto fail; } pack_size = sizeof(ObjectPack) + len; pack = malloc (pack_size); memcpy (pack->id, object_id, 41); memcpy (pack->object, data, len); ccnet_processor_send_response (processor, SC_OBJECT, SS_OBJECT, (char *)pack, pack_size); g_free (data); free (pack); return TRUE; fail: ccnet_processor_send_response (processor, SC_NOT_FOUND, SS_NOT_FOUND, object_id, 41); ccnet_processor_done (processor, FALSE); return FALSE; }
static void send_commit (CcnetProcessor *processor, const char *object_id) { TransferTask *task = ((SeafileSendcommitV2Proc *)processor)->tx_task; char *data; int len; ObjectPack *pack = NULL; int pack_size; if (seaf_obj_store_read_obj (seaf->commit_mgr->obj_store, task->repo_id, task->repo_version, object_id, (void**)&data, &len) < 0) { seaf_warning ("Failed to read commit %s.\n", object_id); goto fail; } pack_size = sizeof(ObjectPack) + len; pack = malloc (pack_size); memcpy (pack->id, object_id, 41); memcpy (pack->object, data, len); ccnet_processor_send_update (processor, SC_OBJECT, SS_OBJECT, (char *)pack, pack_size); g_free (data); free (pack); return; fail: ccnet_processor_send_update (processor, SC_NOT_FOUND, SS_NOT_FOUND, object_id, 41); ccnet_processor_done (processor, FALSE); }
static gboolean send_fs_object (CcnetProcessor *processor, char *object_id) { char *data; int len; ObjectPack *pack = NULL; int pack_size; if (seaf_obj_store_read_obj (seaf->fs_mgr->obj_store, object_id, (void**)&data, &len) < 0) { g_warning ("Failed to read fs object %s.\n", object_id); goto fail; } pack_size = sizeof(ObjectPack) + len; pack = malloc (pack_size); memcpy (pack->id, object_id, 41); memcpy (pack->object, data, len); if (pack_size <= MAX_OBJ_SEG_SIZE) { ccnet_processor_send_update (processor, SC_OBJECT, SS_OBJECT, (char *)pack, pack_size); } else { int offset, n; offset = 0; while (offset < pack_size) { n = MIN(pack_size - offset, MAX_OBJ_SEG_SIZE); if (offset + n < pack_size) { ccnet_processor_send_update (processor, SC_OBJ_SEG, SS_OBJ_SEG, (char *)pack + offset, n); } else { ccnet_processor_send_update (processor, SC_OBJ_SEG_END, SS_OBJ_SEG_END, (char *)pack + offset, n); } seaf_debug ("Sent object %s segment<total = %d, offset = %d, n = %d>\n", object_id, pack_size, offset, n); offset += n; } } seaf_debug ("Send fs object %.8s.\n", object_id); g_free (data); free (pack); return TRUE; fail: ccnet_processor_send_update (processor, SC_NOT_FOUND, SS_NOT_FOUND, object_id, 41); ccnet_processor_done (processor, FALSE); return FALSE; }
static gboolean fsck_get_repo_commit (const char *repo_id, int version, const char *obj_id, void *commit_list) { void *data = NULL; int data_len; GList **cur_list = (GList **)commit_list; int ret = seaf_obj_store_read_obj (seaf->commit_mgr->obj_store, repo_id, version, obj_id, &data, &data_len); if (ret < 0 || data == NULL) return TRUE; SeafCommit *cur_commit = seaf_commit_from_data (obj_id, data, data_len); if (cur_commit != NULL) { *cur_list = g_list_prepend (*cur_list, cur_commit); } g_free(data); return TRUE; }