4
* Copyright (C) 2012-2013 Intel Corporation. All rights reserved.
6
* This program is free software; you can redistribute it and/or modify it
7
* under the terms and conditions of the GNU Lesser General Public License,
8
* version 2.1, as published by the Free Software Foundation.
10
* This program is distributed in the hope it will be useful, but WITHOUT
11
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
15
* You should have received a copy of the GNU Lesser General Public License
16
* along with this program; if not, write to the Free Software Foundation, Inc.,
17
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
19
* Regis Merlino <regis.merlino@intel.com>
23
#ifndef DLEYNA_TASK_PROCESSOR_H__
24
#define DLEYNA_TASK_PROCESSOR_H__
29
#include "task-atom.h"
31
enum dleyna_task_queue_flag_mask_ {
32
DLEYNA_TASK_QUEUE_FLAG_NONE = 0,
33
DLEYNA_TASK_QUEUE_FLAG_AUTO_START = 1,
34
DLEYNA_TASK_QUEUE_FLAG_AUTO_REMOVE = 1 << 1,
36
typedef enum dleyna_task_queue_flag_mask_ dleyna_task_queue_flag_mask;
38
typedef struct dleyna_task_processor_t_ dleyna_task_processor_t;
40
typedef void (*dleyna_task_process_cb_t)(dleyna_task_atom_t *task,
43
typedef void (*dleyna_task_cancel_cb_t)(dleyna_task_atom_t *task,
46
typedef void (*dleyna_task_delete_cb_t)(dleyna_task_atom_t *task,
49
typedef void (*dleyna_task_finally_cb_t)(gboolean cancelled,
52
dleyna_task_processor_t *dleyna_task_processor_new(GSourceFunc on_quit_cb);
54
void dleyna_task_processor_free(dleyna_task_processor_t *processor);
56
void dleyna_task_processor_set_quitting(dleyna_task_processor_t *processor);
58
const dleyna_task_queue_key_t *dleyna_task_processor_add_queue(
59
dleyna_task_processor_t *processor,
63
dleyna_task_process_cb_t task_process_cb,
64
dleyna_task_cancel_cb_t task_cancel_cb,
65
dleyna_task_delete_cb_t task_delete_cb);
67
const dleyna_task_queue_key_t *dleyna_task_processor_lookup_queue(
68
const dleyna_task_processor_t *processor,
72
void dleyna_task_processor_cancel_queue(
73
const dleyna_task_queue_key_t *queue_id);
75
void dleyna_task_processor_remove_queues_for_source(
76
dleyna_task_processor_t *processor,
79
void dleyna_task_processor_remove_queues_for_sink(
80
dleyna_task_processor_t *processor,
83
void dleyna_task_queue_start(const dleyna_task_queue_key_t *queue_id);
85
void dleyna_task_queue_add_task(const dleyna_task_queue_key_t *queue_id,
86
dleyna_task_atom_t *task);
88
void dleyna_task_queue_task_completed(const dleyna_task_queue_key_t *queue_id);
90
void dleyna_task_queue_set_finally(const dleyna_task_queue_key_t *queue_id,
91
dleyna_task_finally_cb_t finally_cb);
93
void dleyna_task_queue_set_user_data(const dleyna_task_queue_key_t *queue_id,
96
gpointer dleyna_task_queue_get_user_data(
97
const dleyna_task_queue_key_t *queue_id);
99
const gchar *dleyna_task_queue_get_source(
100
const dleyna_task_queue_key_t *queue_id);
102
#endif /* DLEYNA_TASK_PROCESSOR_H__ */