diff options
author | Nicolas Dato <nicolas.dato@gmail.com> | 2024-03-03 18:03:56 -0300 |
---|---|---|
committer | Nicolas Dato <nicolas.dato@gmail.com> | 2024-03-04 22:03:09 -0300 |
commit | 56c249f61c536ea7157e1ef12648fbf7161ff5b0 (patch) | |
tree | 60360b958f3ea67bd424a4f9e79b4a49bae7e70d /src/tuberia.h | |
parent | 4b1b7cd304e4ec33eabe1690d32ddc9d2f384836 (diff) | |
download | libtuberia-56c249f61c536ea7157e1ef12648fbf7161ff5b0.tar.gz |
Adding more functions, this should be the base idea. Now this need to be tested, fixed and improved
Diffstat (limited to 'src/tuberia.h')
-rw-r--r-- | src/tuberia.h | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/src/tuberia.h b/src/tuberia.h index 048b078..d410bab 100644 --- a/src/tuberia.h +++ b/src/tuberia.h @@ -2,42 +2,30 @@ #define __LIBTUBERIA_H__ typedef struct tube tube; +typedef struct tube_source tube_source; +typedef struct tube_stage tube_stage; 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); +tube_source *tube_source_alloc(int nslots, tube_fetch fetch, void *opaque, tube_free_element free_element); +tube_stage *tube_stage_alloc(int nslots, tube_process process, void *opaque, tube_free_element free_element); +void tube_stage_free(tube_stage **stage); +void tube_source_and_stages_free(tube_source **source); + +int tube_stage_append(tube_source *source, tube_stage *stage); + +tube *tube_create(tube_source *source, tube_sink sink, void *opaque); +int tube_start(tube *ctx); +int tube_stop(tube *ctx); +void tube_free(tube **ctx); + +int tube_inject(tube *ctx, int timeout_ms, void *element); +void *tube_retrive(tube *ctx, int timeout_ms); +void tube_flush(tube *ctx); +void tube_drop(tube *ctx); #endif //__LIBTUBERIA_H__ |