1 /* $OpenBSD: imsgev.h,v 1.3 2017/03/01 00:53:39 gsoares Exp $ */ 2 3 /* 4 * Copyright (c) 2009 Eric Faurot <eric@openbsd.org> 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef __IMSGEV_H__ 20 #define __IMSGEV_H__ 21 22 #include <event.h> 23 #include <imsg.h> 24 25 #define IMSG_LEN(m) ((m)->hdr.len - IMSG_HEADER_SIZE) 26 27 struct imsgev { 28 struct imsgbuf ibuf; 29 void (*handler)(int, short, void *); 30 struct event ev; 31 void *data; 32 short events; 33 int terminate; 34 void (*callback)(struct imsgev *, int, struct imsg *); 35 void (*needfd)(struct imsgev *); 36 }; 37 38 #define IMSGEV_IMSG 0 39 #define IMSGEV_DONE 1 40 #define IMSGEV_EREAD 2 41 #define IMSGEV_EWRITE 3 42 #define IMSGEV_EIMSG 4 43 44 void imsgev_init(struct imsgev *, int, void *, void (*)(struct imsgev *, 45 int, struct imsg *), void (*)(struct imsgev *)); 46 int imsgev_compose(struct imsgev *, u_int16_t, u_int32_t, u_int32_t, int, 47 void *, u_int16_t); 48 void imsgev_close(struct imsgev *); 49 void imsgev_clear(struct imsgev *); 50 51 #endif /* __IMSGEV_H__ */ 52