ossp-pkg/sio/TODO
_ ___ ____ ____ ____ _
|_|_ _ / _ \/ ___/ ___|| _ \ ___(_) ___
_|_||_| | | | \___ \___ \| |_) | / __| |/ _ \
|_||_|_| | |_| |___) |__) | __/ \__ \ | (_) |
|_|_|_| \___/|____/____/|_| |___/_|\___/
OSSP sio - Stream I/O
TODO
The following items still have to be done:
-NONE-
CANDO
-NONE-
FEEDBACK [rse]
o be consistent in argument order with other sio_stage_t based functions:
< sio_rc_t sio_create_stage (sio_t *sio, sio_module_t *siom, sio_stage_t **siosp);
> sio_rc_t sio_create_stage (sio_t *sio, sio_stage_t **siosp, sio_module_t *siom);
o merge sio_module.h into sio.h because although intended for module writers
it has to be part of the official/public API. So it belongs to sio.h, too.
o the following sio_rc_t's have no ERR sub-prefix. Obviously because you treat
them not really as "errors". Ok, but nevertheless they need a common
sub-prefix because belong together into an own class of return codes.
Suggestions: SIO_DO_XXX or SIO_HINT_XXX, etc.
SIO_UPSTREAM Invoke Upstream Stage
SIO_DOWNSTREAM Invoke Downstream Stage
SIO_XSTREAM Invoke Crossstream Stage
SIO_LOOP Loop through current Stage
o sio.h haengt von al.h ab wegen References to al_t!
Suggestion: forward declaration in sio.h for al_t.
o sio_push: I expected a different operation by reading "push" here.
Would perhaps sio_end, sio_finish, sio_close, sio_eof, sio_shutoff,
etc not more intuitive here?
o sio_flag und sio_clearflag:
The return value (int) is inconsistent with the others (sio_rc_t).
My suggestion: sa_rc_t sio_setflag(sio_t *sio, sio_flag_t fl);
sa_rc_t sio_getflag(sio_t *sio, sio_flag_t fl);
And the return code for old TRUE is SA_OK and for FALSE is SA_ERR_NEG
(negative) or something like this.
o sios->{open,close}{r,w}(): any reason why it's four functions
and not just two? I intuitively expected just sios->{open,close}()
with an additional parameter indicating read or write operation.
o sio_configure_stage is unneccesary restrictive in passed data:
< sio_rc_t sio_configure_stage(sio_t *sio, sio_stage_t *sios, void *o, void *v);
> sio_rc_t sio_configure_stage(sio_t *sio, sio_stage_t *sios, void *v, ...);
< sio_rc_t (*configure) (sio_t *, void *, void *, void *);
> sio_rc_t (*configure) (sio_t *, void *, void *, va_list ap);
This way the application can decide itself how it is configured
and with which parameter stypes and with how much parameters.
o Additionally to make sios->configure implementations easier and to
reduce complexity and redundancy, I suggest to provide a
sio_setparams() function which is similar to l2_util_setparams() in
OSSP l2. This optionally provides the usually required convinience in
writing stages.