static int final_handler(worker_t *worker, GError **error) { gchar *ns_name; gchar task_id[sizeof(TASK_ID)+1+LIMIT_LENGTH_NSNAME]; (void)error; ns_name = asn1_worker_get_session_data(worker); g_snprintf(task_id, sizeof(task_id), TASK_ID".%s", ns_name); task_done(task_id); return 1; }
static int parse_namespace_info(worker_t *worker, GError **error) { gchar *ns_name; asn1_session_t *asn1_session; namespace_data_t *ns_data; namespace_info_t *ns_info = NULL; asn1_session = asn1_worker_get_session(worker); ns_name = asn1_worker_get_session_data(worker); if (!ns_name || !asn1_session) { GSETERROR(error,"Invalid worker : no session data"); return 0; } ns_data = g_hash_table_lookup(namespaces,ns_name); if (!ns_data) { GSETERROR(error,"Namespace '%s' does not exist", ns_name); return 0; } if (asn1_session->resp_body != NULL) { ns_info = namespace_info_unmarshall(asn1_session->resp_body, asn1_session->resp_body_size, error); if (ns_info == NULL) { GSETERROR(error, "Failed to unmarshall namespace_info from ASN1 data"); return 0; } memcpy(&(ns_info->addr), &(ns_data->ns_info.addr), sizeof(addr_info_t)); /* Check that we have the same name */ if (strcmp(ns_info->name, ns_data->name)) { ERROR("Namespace name [%s] in /etc/gridstorage does not match name [%s] in conscience !", ns_data->name, ns_info->name); namespace_info_free(ns_info); return(0); } DEBUG("Infos of namespace [%s] updated with value name [%s] / chunk_size[%"G_GINT64_FORMAT"]", ns_data->ns_info.name, ns_info->name, ns_info->chunk_size); namespace_info_clear(&(ns_data->ns_info)); namespace_info_copy(ns_info, &(ns_data->ns_info)); namespace_info_free(ns_info); /* Flag namespace if it's the first config */ ns_data->configured = TRUE; } return(1); }
static int asn1_final_handler( worker_t *worker, GError **error ) { worker_t *original_worker; TRACE_POSITION(); original_worker = asn1_worker_get_session_data(worker); if (!original_worker) { GSETERROR(error,"Request successful but reply failed due to invalid worker"); return 0; } __respond_message( original_worker, 1, "OK", NULL ); return 1; }
static int asn1_error_handler( worker_t *worker, GError **error ) { worker_t *original_worker; TRACE_POSITION(); GSETERROR(error, "Failed to send the 'erroneous containers flush' order"); original_worker = asn1_worker_get_session_data(worker); if (!original_worker) { GSETERROR(error,"Failed due to invalid worker"); return 0; } __respond_error( original_worker, error?*error:NULL, NULL ); return 1; }
static int error_handler(worker_t *worker, GError **error) { gchar *ns_name; gchar task_id[sizeof(TASK_ID)+1+LIMIT_LENGTH_NSNAME]; ns_name = asn1_worker_get_session_data(worker); if (ns_name) GSETERROR(error, "[task_id=%s.%s] Failed to request namespace info", TASK_ID, ns_name); else GSETERROR(error, "[task_id=%s.?] Failed to request namespace info", TASK_ID); g_snprintf(task_id, sizeof(task_id), TASK_ID".%s", ns_name); task_done(task_id); return(1); }