static void prv_process_sync_task(dlr_task_t *task) { GError *error; switch (task->type) { case DLR_TASK_GET_VERSION: dlr_task_complete(task); dleyna_task_queue_task_completed(task->atom.queue_id); break; case DLR_TASK_GET_SERVERS: task->result = dlr_upnp_get_server_ids(g_context.upnp); dlr_task_complete(task); dleyna_task_queue_task_completed(task->atom.queue_id); break; case DLR_TASK_RAISE: case DLR_TASK_QUIT: error = g_error_new(DLEYNA_SERVER_ERROR, DLEYNA_ERROR_NOT_SUPPORTED, "Command not supported."); dlr_task_fail(task, error); dleyna_task_queue_task_completed(task->atom.queue_id); g_error_free(error); break; default: break; } }
static void prv_process_sync_task(dld_task_t *task) { GError *error; switch (task->type) { case DLD_TASK_GET_VERSION: task->result = g_variant_ref_sink(g_variant_new_string( VERSION)); dld_task_complete(task); break; case DLD_TASK_GET_DEVICES: task->result = dld_upnp_get_device_ids(g_context.upnp); dld_task_complete(task); break; case DLD_TASK_RESCAN: dld_upnp_rescan(g_context.upnp); dld_task_complete(task); break; default: goto finished; break; } dleyna_task_queue_task_completed(task->atom.queue_id); finished: return; }
void dleyna_service_task_begin_action_cb(GUPnPServiceProxy *proxy, GUPnPServiceProxyAction *action, gpointer user_data) { dleyna_service_task_t *task = (dleyna_service_task_t *)user_data; task->p_action = NULL; task->callback(proxy, action, task->user_data); dleyna_task_queue_task_completed(task->base.queue_id); }
void dleyna_service_task_cancel_cb(dleyna_task_atom_t *atom, gpointer user_data) { dleyna_service_task_t *task = (dleyna_service_task_t *)atom; if (task->p_action) { if (task->proxy) gupnp_service_proxy_cancel_action(task->proxy, task->p_action); task->p_action = NULL; dleyna_task_queue_task_completed(task->base.queue_id); } }
void dleyna_service_task_process_cb(dleyna_task_atom_t *atom, gpointer user_data) { gboolean failed = FALSE; dleyna_service_task_t *task = (dleyna_service_task_t *)atom; task->p_action = task->t_action(task, task->proxy, &failed); if (failed) dleyna_task_processor_cancel_queue(task->base.queue_id); if (!task->p_action) dleyna_task_queue_task_completed(task->base.queue_id); }
static void prv_async_task_complete(dlr_task_t *task, GError *error) { DLEYNA_LOG_DEBUG("Enter"); if (error) { dlr_task_fail(task, error); g_error_free(error); } else { dlr_task_complete(task); } dleyna_task_queue_task_completed(task->atom.queue_id); DLEYNA_LOG_DEBUG("Exit"); }
static void prv_process_sync_task(dls_task_t *task) { dls_client_t *client; const gchar *client_name; switch (task->type) { case DLS_TASK_GET_VERSION: task->result = g_variant_ref_sink(g_variant_new_string( VERSION)); dls_task_complete(task); break; case DLS_TASK_GET_SERVERS: task->result = dls_upnp_get_device_ids(g_context.upnp); dls_task_complete(task); break; case DLS_TASK_RESCAN: dls_upnp_rescan(g_context.upnp); dls_task_complete(task); break; case DLS_TASK_SET_PROTOCOL_INFO: client_name = dleyna_task_queue_get_source(task->atom.queue_id); client = g_hash_table_lookup(g_context.watchers, client_name); if (client) { g_free(client->protocol_info); if (task->ut.protocol_info.protocol_info[0]) { client->protocol_info = task->ut.protocol_info.protocol_info; task->ut.protocol_info.protocol_info = NULL; } else { client->protocol_info = NULL; } } dls_task_complete(task); break; case DLS_TASK_SET_PREFER_LOCAL_ADDRESSES: client_name = dleyna_task_queue_get_source(task->atom.queue_id); client = g_hash_table_lookup(g_context.watchers, client_name); if (client) { client->prefer_local_addresses = task->ut.prefer_local_addresses.prefer; } dls_task_complete(task); break; case DLS_TASK_GET_UPLOAD_STATUS: dls_upnp_get_upload_status(g_context.upnp, task); break; case DLS_TASK_GET_UPLOAD_IDS: dls_upnp_get_upload_ids(g_context.upnp, task); break; case DLS_TASK_CANCEL_UPLOAD: dls_upnp_cancel_upload(g_context.upnp, task); break; default: goto finished; break; } dleyna_task_queue_task_completed(task->atom.queue_id); finished: return; }