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