123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #include "tmux.h"
- #ifndef _IMSG_H_
- #define _IMSG_H_
- #define IBUF_READ_SIZE 65535
- #define IMSG_HEADER_SIZE sizeof(struct imsg_hdr)
- #define MAX_IMSGSIZE 16384
- struct ibuf {
- TAILQ_ENTRY(ibuf) entry;
- u_char *buf;
- size_t size;
- size_t max;
- size_t wpos;
- size_t rpos;
- int fd;
- };
- struct msgbuf {
- TAILQ_HEAD(, ibuf) bufs;
- u_int32_t queued;
- int fd;
- };
- struct ibuf_read {
- u_char buf[IBUF_READ_SIZE];
- u_char *rptr;
- size_t wpos;
- };
- struct imsg_fd {
- TAILQ_ENTRY(imsg_fd) entry;
- int fd;
- };
- struct imsgbuf {
- TAILQ_HEAD(, imsg_fd) fds;
- struct ibuf_read r;
- struct msgbuf w;
- int fd;
- pid_t pid;
- };
- #define IMSGF_HASFD 1
- struct imsg_hdr {
- u_int32_t type;
- u_int16_t len;
- u_int16_t flags;
- u_int32_t peerid;
- u_int32_t pid;
- };
- struct imsg {
- struct imsg_hdr hdr;
- int fd;
- void *data;
- };
- struct ibuf *ibuf_open(size_t);
- struct ibuf *ibuf_dynamic(size_t, size_t);
- int ibuf_add(struct ibuf *, const void *, size_t);
- void *ibuf_reserve(struct ibuf *, size_t);
- void *ibuf_seek(struct ibuf *, size_t, size_t);
- size_t ibuf_size(struct ibuf *);
- size_t ibuf_left(struct ibuf *);
- void ibuf_close(struct msgbuf *, struct ibuf *);
- int ibuf_write(struct msgbuf *);
- void ibuf_free(struct ibuf *);
- void msgbuf_init(struct msgbuf *);
- void msgbuf_clear(struct msgbuf *);
- int msgbuf_write(struct msgbuf *);
- void msgbuf_drain(struct msgbuf *, size_t);
- void imsg_init(struct imsgbuf *, int);
- ssize_t imsg_read(struct imsgbuf *);
- ssize_t imsg_get(struct imsgbuf *, struct imsg *);
- int imsg_compose(struct imsgbuf *, u_int32_t, u_int32_t, pid_t,
- int, const void *, u_int16_t);
- int imsg_composev(struct imsgbuf *, u_int32_t, u_int32_t, pid_t,
- int, const struct iovec *, int);
- struct ibuf *imsg_create(struct imsgbuf *, u_int32_t, u_int32_t, pid_t,
- u_int16_t);
- int imsg_add(struct ibuf *, const void *, u_int16_t);
- void imsg_close(struct imsgbuf *, struct ibuf *);
- void imsg_free(struct imsg *);
- int imsg_flush(struct imsgbuf *);
- void imsg_clear(struct imsgbuf *);
- #endif
|