X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=ustream.h;h=15f1ba10e8d7430271d071d9c3fa2f4e870f67ef;hp=634a3e7e41b9e7931cc1f17841f1246fff4e6a8c;hb=17f4e41ecb80f70c14493b4518e6eabec9faff7b;hpb=efc9f4b702f44854193d015b72831b4530258aaf diff --git a/ustream.h b/ustream.h index 634a3e7..15f1ba1 100644 --- a/ustream.h +++ b/ustream.h @@ -68,7 +68,7 @@ struct ustream { void (*notify_write)(struct ustream *s, int bytes); /* - * notify_state: + * notify_state: (optional) * called by the ustream implementation to notify that the read * side of the stream is closed (eof is set) or there was a write * error (write_error is set). @@ -163,6 +163,17 @@ static inline bool ustream_read_blocked(struct ustream *s) return !!(s->read_blocked & READ_BLOCKED_USER); } +static inline int ustream_pending_data(struct ustream *s, bool write) +{ + struct ustream_buf_list *b = write ? &s->w : &s->r; + return b->data_bytes; +} + +static inline bool ustream_read_buf_full(struct ustream *s) +{ + return ustream_pending_data(s, false) == s->r.buffer_len; +} + /*** --- functions only used by ustream implementations --- ***/ /* ustream_init_defaults: fill default callbacks and options */