diff options
Diffstat (limited to 'misc/stream.h')
| -rw-r--r-- | misc/stream.h | 53 |
1 files changed, 22 insertions, 31 deletions
diff --git a/misc/stream.h b/misc/stream.h index 6ed91d5..30ce443 100644 --- a/misc/stream.h +++ b/misc/stream.h @@ -1,36 +1,27 @@ #ifndef BTPD_STREAM_H #define BTPD_STREAM_H -typedef int (*F_fdcb)(const char *, int *, void *); - -#define def_stream(name) \ -struct name {\ - struct metainfo *meta;\ - F_fdcb fd_cb;\ - void *fd_arg;\ - unsigned index;\ - off_t t_off;\ - off_t f_off;\ - int fd;\ -} - -def_stream(bt_stream_ro); - -struct bt_stream_ro * -bts_open_ro(struct metainfo *meta, off_t off, F_fdcb fd_cb, void *fd_arg); -int bts_read_ro(struct bt_stream_ro *bts, char *buf, size_t len); -void bts_seek_ro(struct bt_stream_ro *bts, off_t nbytes); -void bts_close_ro(struct bt_stream_ro *bts); - -def_stream(bt_stream_wo); - -struct bt_stream_wo * -bts_open_wo(struct metainfo *meta, off_t off, F_fdcb fd_cb, void *fd_arg); -int bts_write_wo(struct bt_stream_wo *bts, const char *buf, size_t len); -int bts_close_wo(struct bt_stream_wo *bts); - -int bts_sha(struct bt_stream_ro *bts, off_t length, uint8_t *hash); -int bts_hashes(struct metainfo *, F_fdcb fd_cb, - void (*cb)(uint32_t, uint8_t *, void *), void *arg); +typedef int (*fdcb_t)(const char *, int *, void *); +typedef void (*hashcb_t)(uint32_t, uint8_t *, void *); + +struct bt_stream { + struct metainfo *meta; + fdcb_t fd_cb; + void *fd_arg; + unsigned index; + off_t t_off; + off_t f_off; + int fd; +}; + +int bts_open(struct bt_stream **res, struct metainfo *meta, fdcb_t fd_cb, + void *fd_arg); +int bts_get(struct bt_stream *bts, off_t off, uint8_t *buf, size_t len); +int bts_put(struct bt_stream *bts, off_t off, const uint8_t *buf, size_t len); +int bts_close(struct bt_stream *bts); + +int bts_sha(struct bt_stream *bts, off_t start, off_t length, uint8_t *hash); +int bts_hashes(struct metainfo *meta, fdcb_t fd_cb, hashcb_t hash_cb, + void *arg); #endif |