From 56c249f61c536ea7157e1ef12648fbf7161ff5b0 Mon Sep 17 00:00:00 2001 From: Nicolas Dato Date: Sun, 3 Mar 2024 18:03:56 -0300 Subject: Adding more functions, this should be the base idea. Now this need to be tested, fixed and improved --- src/tuberia.h | 48 ++++++++++++++++++------------------------------ 1 file changed, 18 insertions(+), 30 deletions(-) (limited to 'src/tuberia.h') 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__ -- cgit v1.2.3