static int put_commit_start (CcnetProcessor *processor, int argc, char **argv) { char *head_id, *remote_id = NULL; char *session_token; USE_PRIV; if (argc < 2) { ccnet_processor_send_response (processor, SC_BAD_ARGS, SS_BAD_ARGS, NULL, 0); ccnet_processor_done (processor, FALSE); return -1; } if (argc == 2) { head_id = argv[0]; session_token = argv[1]; } else if (argc >= 3) { head_id = argv[0]; remote_id = argv[1]; session_token = argv[2]; } if (strlen(head_id) != 40 || (remote_id && strlen(remote_id) != 40)) { ccnet_processor_send_response (processor, SC_BAD_ARGS, SS_BAD_ARGS, NULL, 0); ccnet_processor_done (processor, FALSE); return -1; } if (seaf_token_manager_verify_token (seaf->token_mgr, processor->peer_id, session_token, NULL) < 0) { ccnet_processor_send_response (processor, SC_ACCESS_DENIED, SS_ACCESS_DENIED, NULL, 0); ccnet_processor_done (processor, FALSE); return -1; } memcpy (priv->head_commit_id, head_id, 41); if (remote_id != NULL) memcpy (priv->remote_commit_id, remote_id, 41); ccnet_processor_send_response (processor, SC_OK, SS_OK, NULL, 0); priv->reader_id = seaf_obj_store_register_async_read (seaf->commit_mgr->obj_store, read_done_cb, processor); priv->registered = TRUE; ccnet_processor_thread_create (processor, seaf->job_mgr, collect_commit_id_thread, collect_commit_id_done, processor); return 0; }
static void register_async_io (CcnetProcessor *processor) { USE_PRIV; priv->registered = TRUE; priv->reader_id = seaf_obj_store_register_async_read (seaf->fs_mgr->obj_store, priv->store_id, priv->repo_version, fs_object_read_cb, processor); }
static void register_async_io (CcnetProcessor *processor) { USE_PRIV; priv->registered = TRUE; priv->reader_id = seaf_obj_store_register_async_read (seaf->fs_mgr->obj_store, on_seafdir_read, processor); priv->stat_id = seaf_obj_store_register_async_stat (seaf->fs_mgr->obj_store, on_seafile_stat, processor); priv->writer_id = seaf_obj_store_register_async_write (seaf->fs_mgr->obj_store, on_fs_write, processor); }
static void collect_commit_id_done (void *vprocessor) { CcnetProcessor *processor = vprocessor; USE_PRIV; if (!priv->id_list) { ccnet_processor_send_response (processor, SC_NOT_FOUND, SS_NOT_FOUND, NULL, 0); ccnet_processor_done (processor, FALSE); return; } priv->reader_id = seaf_obj_store_register_async_read (seaf->commit_mgr->obj_store, priv->repo_id, priv->repo_version, read_done_cb, processor); priv->registered = TRUE; read_and_send_commit (processor); }