static void handle_response (CcnetProcessor *processor, char *code, char *code_msg, char *content, int clen) { SeafileGetcommitProc *proc = (SeafileGetcommitProc *)processor; if (proc->tx_task->state != TASK_STATE_NORMAL) { /* TODO: not tested yet */ ccnet_processor_send_update (processor, SC_SHUTDOWN, SS_SHUTDOWN, NULL, 0); ccnet_processor_done (processor, TRUE); return; } switch (processor->state) { case INIT: if (strncmp(code, SC_OK, 3) == 0) { processor->state = RECV_IDS; } else { g_warning ("[getcommit] Bad response: %s %s\n", code, code_msg); transfer_task_set_error (proc->tx_task, TASK_ERR_DOWNLOAD_COMMIT); ccnet_processor_done (processor, FALSE); } break; case RECV_IDS: if (strncmp(code, SC_COMMIT_IDS, 3) == 0) { /* add to inspect queue */ process_commit_list (processor, content, clen); } else if (strncmp(code, SC_END, 3) == 0) { /* change state to FETCH_OBJECT */ processor->state = FETCH_OBJECT; } else { g_warning ("[getcommit] Bad response: %s %s\n", code, code_msg); transfer_task_set_error (proc->tx_task, TASK_ERR_DOWNLOAD_COMMIT); ccnet_processor_done (processor, FALSE); } break; case FETCH_OBJECT: if (strncmp(code, SC_OBJECT, 3) == 0) { receive_commit (processor, content, clen); } else { g_warning ("[getcommit] Bad response: %s %s\n", code, code_msg); /* Transfer the task state to error when an error ocurred */ transfer_task_set_error (proc->tx_task, TASK_ERR_DOWNLOAD_COMMIT); ccnet_processor_done (processor, FALSE); } break; default: g_assert (0); } }
static void handle_response (CcnetProcessor *processor, char *code, char *code_msg, char *content, int clen) { SeafileGetcommitV3Proc *proc = (SeafileGetcommitV3Proc *)processor; if (proc->tx_task->state != TASK_STATE_NORMAL) { ccnet_processor_done (processor, TRUE); return; } if (strncmp(code, SC_OK, 3) == 0) { receive_commit (processor, content, clen); return; } seaf_warning ("Bad response: %s %s.\n", code, code_msg); if (memcmp (code, SC_ACCESS_DENIED, 3) == 0) transfer_task_set_error (proc->tx_task, TASK_ERR_ACCESS_DENIED); ccnet_processor_done (processor, FALSE); }
static void handle_update (CcnetProcessor *processor, char *code, char *code_msg, char *content, int clen) { switch (processor->state) { case RECV_OBJECT: if (strncmp(code, SC_OBJECT, 3) == 0) { receive_commit (processor, content, clen); } else if (strncmp(code, SC_END, 3) == 0) { seaf_debug ("[recvcommit] Recv commit end.\n"); ccnet_processor_done (processor, TRUE); } else { g_warning ("[recvcommit] Bad update: %s %s\n", code, code_msg); ccnet_processor_send_response (processor, SC_BAD_UPDATE_CODE, SS_BAD_UPDATE_CODE, NULL, 0); ccnet_processor_done (processor, FALSE); } break; default: g_assert (0); } }
static void handle_response (CcnetProcessor *processor, char *code, char *code_msg, char *content, int clen) { SeafileGetcommitV2Proc *proc = (SeafileGetcommitV2Proc *)processor; if (proc->tx_task->state != TASK_STATE_NORMAL) { ccnet_processor_done (processor, TRUE); return; } switch (processor->state) { case INIT: if (strncmp(code, SC_OK, 3) == 0) { processor->state = RECV_OBJECT; return; } break; case RECV_OBJECT: if (strncmp(code, SC_OBJECT, 3) == 0) { receive_commit (processor, content, clen); return; } else if (strncmp (code, SC_END, 3) == 0) { seaf_debug ("[getcommit] Get commit end.\n"); ccnet_processor_done (processor, TRUE); return; } break; default: g_return_if_reached (); } g_warning ("Bad response: %s %s.\n", code, code_msg); if (memcmp (code, SC_ACCESS_DENIED, 3) == 0) transfer_task_set_error (proc->tx_task, TASK_ERR_ACCESS_DENIED); ccnet_processor_done (processor, FALSE); }