1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#ifndef __LIBTUBERIA_H__
#define __LIBTUBERIA_H__
typedef struct tube tube;
typedef void *(*tube_fetch)(void *opaque);
typedef void *(*tube_process)(void *element, void *opaque);
typedef void (*tube_sink)(void *element, void *opaque);
typedef void (*tube_free_element)(void *element);
struct tube_stage {
struct tube_stage *next;
int nqueue;
tube_process *process;
void *opaque;
};
struct tube_source {
struct tube_stage *next;
int nqueue;
tube_fetch *fetch;
void *opaque;
};
struct tube_source *tube_source_alloc(int nqueue, tube_fetch *fetch, void *opaque);
struct tube_stage *tube_stage_alloc(int nqueue, tube_process *process, void *opaque);
void tube_stage_free(struct tube_stage **stage);
void tube_source_and_stages_free(struct tube_source **source);
int tube_stage_append(struct tube_source *source, struct tube_stage *stage);
tube *tube_create(struct tube_source *source, tube_sink *sink, void *opaque);
int tube_start(tube *tube);
int tube_stop(tube *tube);
void tube_free(tube **tube, tube_free_element free_element);
int tube_inject(tube *tube, int timeout_ms, void *element);
void *tube_retrive(tube *tube, int timeout_ms);
int tube_flush(tube *tube);
int tube_drop(tube *tube, tube_free_element free_element);
#endif //__LIBTUBERIA_H__
|