diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-07-17 14:21:26 +0200 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-07-17 14:21:26 +0200 |
commit | 3f0a442799955f56b2c77aabd6bc7aa4458718b4 (patch) | |
tree | 34504e5a01f755be3e3130578d6c0be86cf6b67a /mcastseed/src/dgrambuf.h | |
parent | 96e0fd1e6571c41e102d4780f6e67c0736beef35 (diff) | |
download | eficast-3f0a442799955f56b2c77aabd6bc7aa4458718b4.tar.gz eficast-3f0a442799955f56b2c77aabd6bc7aa4458718b4.tar.bz2 eficast-3f0a442799955f56b2c77aabd6bc7aa4458718b4.zip |
API changes, pedandic fixes, dgrambuf stats & info field, recvmmsg() with alarm(), partial writev() support.
Diffstat (limited to 'mcastseed/src/dgrambuf.h')
-rw-r--r-- | mcastseed/src/dgrambuf.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/mcastseed/src/dgrambuf.h b/mcastseed/src/dgrambuf.h index fab7649..f405757 100644 --- a/mcastseed/src/dgrambuf.h +++ b/mcastseed/src/dgrambuf.h @@ -7,17 +7,31 @@ */ #include <stdlib.h> /* size_t */ +#define DGRAMBUF_RECV_OVERWRITE 1 << 1 +#define DGRAMBUF_RECV_EINTR 1 << 2 +#define DGRAMBUF_RECV_IOVEC_FULL 1 << 3 +#define DGRAMBUF_RECV_FINALIZE 1 << 4 +#define DGRAMBUF_RECV_FUTURE_DGRAM 1 << 5 +#define DGRAMBUF_RECV_VALID_DGRAM 1 << 6 + +#define DGRAMBUF_WRITE_PARTIAL 1 << 1 +#define DGRAMBUF_WRITE_EWOULDBLOCK_OR_EINTR 1 << 2 +#define DGRAMBUF_WRITE_IOVEC_FULL 1 << 3 +#define DGRAMBUF_WRITE_SUCCESS 1 << 4 + typedef struct dgrambuf_t *dgrambuf_t; dgrambuf_t dgrambuf_new(size_t dgram_slots, size_t dgram_max_size, size_t dgram_header_size, size_t iovec_slots); void dgrambuf_free(dgrambuf_t *dbuf); -size_t dgrambuf_free_count(const dgrambuf_t); -void dgrambuf_set_validate_func(dgrambuf_t dbuf, unsigned int (*func)(unsigned int, void *) ); +size_t dgrambuf_get_free_count(const dgrambuf_t); +int dgrambuf_everything_was_received(dgrambuf_t dbuf); +void dgrambuf_set_validate_func(dgrambuf_t dbuf, int (*validate_func)(unsigned int, void *, unsigned int *)); int dgrambuf_have_data_ready_to_write(dgrambuf_t dbuf); +int dgrambuf_have_received_everything(dgrambuf_t dbuf); - -int dgrambuf_recvmmsg(dgrambuf_t dbuf, int sockfd); -ssize_t dgrambuf_write(dgrambuf_t dbuf, int fd); +/* Warning : dgrambuf_recvmmsg sets and restore SIGALRM handler if timeout != 0 */ +ssize_t dgrambuf_recvmmsg(dgrambuf_t dbuf, int sockfd, int timeout, int *info); +ssize_t dgrambuf_write(dgrambuf_t dbuf, int fd, int *info); #endif /* DGRAMBUF_H */ |