ekg2
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje Grupay Strony
queries.h
Idź do dokumentacji tego pliku.
1 #ifndef __EKG_QUERIES
2 #define __EKG_QUERIES
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #define QUERY_ARGS_MAX 12
9 
11  QUERY_ARG_END = 0, /* MUSTBE LAST ELEMENT OF `query_arg_type` */
12 
13  QUERY_ARG_CHARP, /* char * */
14  QUERY_ARG_CHARPP, /* char ** */
15  QUERY_ARG_INT, /* int */
16  QUERY_ARG_UINT, /* unsgined int */ /* -> time_t, uint32_t */
17 
18  QUERY_ARG_WINDOW = 100, /* window_t */
19  QUERY_ARG_FSTRING, /* fstring_t */
20  QUERY_ARG_USERLIST, /* userlist_t */
21  QUERY_ARG_SESSION /* session_t */
22 };
23 
24 struct query_def {
25  int id;
26  char *name;
27  enum query_arg_type params[QUERY_ARGS_MAX]; /* scripts will use it */
28 };
29 
30 /* uniq id of known queries..., add new just before QUERY_EXTERNAL */
31 enum queries_id {
34 
36  EVENT_ADDED, EVENT_REMOVED, /* event events */
37  MESSAGE_ENCRYPT, MESSAGE_DECRYPT, /* encryption */
44  EKG_SIGUSR1, EKG_SIGUSR2, /* signals */
45  CONFIG_POSTINIT, QUITTING, /* ekg-events */
46 
48  RSS_MESSAGE, /* rss-events */
49 
52 
55 
57 
61 
63 
70 
72 
74 
76 };
77 
78 #ifdef __DECLARE_QUERIES_STUFF
79 #undef __DECLARE_QUERIES_STUFF
80 
81 /* list of known queries. keep it sorted with enum. */
82 
83 const struct query_def query_list[] = {
84  { MAIL_COUNT, "mail-count", {
85  QUERY_ARG_INT, /* mail count */
86  QUERY_ARG_END } },
87 
88  { DAY_CHANGED, "day-changed", {
89  /* XXX: struct tm *, struct tm * */
90  QUERY_ARG_END } },
91 
92  { STATUS_SHOW, "status-show", {
93  QUERY_ARG_CHARP, /* session uid */
94  QUERY_ARG_END } },
95 
96  { PLUGIN_PRINT_VERSION, "plugin-print-version", {
97  QUERY_ARG_END } }, /* no params */
98 
99  { SET_VARS_DEFAULT, "set-vars-default", {
100  QUERY_ARG_END } }, /* no params */
101 
102  { VARIABLE_CHANGED, "variable-changed", {
103  QUERY_ARG_CHARP, /* variable */
104  QUERY_ARG_END } },
105 
106  { BINDING_COMMAND, "binding-command", {
107  /* XXX */
108  QUERY_ARG_END } },
109 
110  { BINDING_DEFAULT, "binding-default", {
111  /* XXX */
112  QUERY_ARG_END } },
113 
114  { BINDING_SET, "binding-set", {
115  /* XXX */
116  QUERY_ARG_END } },
117 
118  { EVENT_ADDED, "event-added", {
119  QUERY_ARG_CHARP, /* event name */
120  QUERY_ARG_END } },
121 
122  { EVENT_REMOVED, "event-removed", {
123  /* XXX, never used */
124  QUERY_ARG_END } },
125 
126  { MESSAGE_ENCRYPT, "message-encrypt", {
127  /* XXX */
128  QUERY_ARG_END } },
129 
130  { MESSAGE_DECRYPT, "message-decrypt", {
131  /* XXX */
132  QUERY_ARG_END } },
133 
134  { METACONTACT_ADDED, "metacontact-added", {
135  QUERY_ARG_CHARP, /* metacontact name */
136  QUERY_ARG_END } },
137 
138  { METACONTACT_ITEM_ADDED, "metacontact-item-added", {
139  /* XXX */
140  QUERY_ARG_END } },
141 
142  { METACONTACT_ITEM_REMOVED, "metacontact-item-removed", {
143  /* XXX */
144  QUERY_ARG_END } },
145 
146  { METACONTACT_REMOVED, "metacontact-removed", {
147  QUERY_ARG_CHARP, /* metacontact name */
148  QUERY_ARG_END } },
149 
150  { PROTOCOL_MESSAGE_SENT, "protocol-message-sent", {
151  QUERY_ARG_CHARP, /* session */
152  QUERY_ARG_CHARP, /* uid */
153  QUERY_ARG_CHARP, /* text */
154  QUERY_ARG_END } },
155 
156  { PROTOCOL_MESSAGE_RECEIVED, "protocol-message-received", {
157  QUERY_ARG_CHARP, /* session uid */
158  QUERY_ARG_CHARP, /* uid */
159  QUERY_ARG_CHARPP, /* rcpts */
160  QUERY_ARG_CHARP, /* text */
161  QUERY_ARG_UINT, /* uint32_t */ /* format */
162  QUERY_ARG_UINT, /* time_t */ /* sent */
163  QUERY_ARG_INT, /* mclass */
164  QUERY_ARG_CHARP, /* seq */
165  QUERY_ARG_INT, /* secure */
166  QUERY_ARG_END } },
167 
168  { PROTOCOL_MESSAGE_POST, "protocol-message-post", {
169  QUERY_ARG_CHARP, /* session uid */
170  QUERY_ARG_CHARP, /* uid */
171  QUERY_ARG_CHARPP, /* rcpts */
172  QUERY_ARG_UINT, /* uint32_t */ /* format */
173  QUERY_ARG_UINT, /* time_t */ /* sent */
174  QUERY_ARG_INT, /* mclass */
175  QUERY_ARG_CHARP, /* seq */
176  QUERY_ARG_INT, /* secure */
177  QUERY_ARG_END } },
178 
179  { EVENT_AWAY, "event_away", {
180  QUERY_ARG_CHARP, /* session uid */
181  QUERY_ARG_CHARP, /* uid */
182  QUERY_ARG_END } },
183 
184  { EVENT_AVAIL, "event_avail", {
185  /* XXX, emited, but noone connect to this. */
186  QUERY_ARG_CHARP, /* session uid */
187  QUERY_ARG_CHARP, /* uid */
188  QUERY_ARG_END } },
189 
190  { EVENT_DESCR, "event_descr", {
191  QUERY_ARG_CHARP, /* session uid */
192  QUERY_ARG_CHARP, /* uid */
193  QUERY_ARG_CHARP, /* descr */
194  QUERY_ARG_END } },
195 
196  { EVENT_ONLINE, "event_online", {
197  QUERY_ARG_CHARP, /* session uid */
198  QUERY_ARG_CHARP, /* uid */
199  QUERY_ARG_END } },
200 
201  { EVENT_NA, "event_na", {
202  QUERY_ARG_CHARP, /* session uid */
203  QUERY_ARG_CHARP, /* uid */
204  QUERY_ARG_END } },
205 
206  { USERLIST_ADDED, "userlist-added", {
207  /* XXX, we need here a session->uid too (?) */
208 
209  QUERY_ARG_CHARP, /* uid */
210  QUERY_ARG_CHARP, /* nickname */
211  QUERY_ARG_INT, /* quiet */
212  QUERY_ARG_END } },
213 
214  { USERLIST_CHANGED, "userlist-changed", {
215  QUERY_ARG_CHARP, /* session uid */
216  QUERY_ARG_CHARP, /* uid */
217  QUERY_ARG_END } },
218 
219  { USERLIST_REMOVED, "userlist-removed", {
220  /* XXX, we need here a session->uid too (?) */
221 
222  QUERY_ARG_CHARP, /* nickname or uid */
223  QUERY_ARG_CHARP, /* uid */
224  QUERY_ARG_END } },
225 
226  { USERLIST_RENAMED, "userlist-renamed", {
227  /* XXX */
228  QUERY_ARG_END } },
229 
230  { USERLIST_INFO, "userlist-info", {
231  /* XXX */
232  QUERY_ARG_END } },
233 
234  { USERLIST_PRIVHANDLE, "userlist-privhandle", {
235  QUERY_ARG_USERLIST, /* userlist_t */
236  QUERY_ARG_INT, /* function */
237  /* optional things? */
238  QUERY_ARG_END } },
239 
240  { SESSION_ADDED, "session-added", {
241  QUERY_ARG_CHARP, /* session uid */
242  QUERY_ARG_END } },
243 
244  { SESSION_CHANGED, "session-changed", {
245  QUERY_ARG_END } }, /* no params */
246 
247  { SESSION_REMOVED, "session-removed", {
248  QUERY_ARG_CHARP, /* session uid */
249  QUERY_ARG_END } },
250 
251  { SESSION_RENAMED, "session-renamed", {
252  QUERY_ARG_CHARP, /* new session alias */
253  QUERY_ARG_END } },
254 
255  { SESSION_STATUS, "session-status", {
256  /* XXX */
257  QUERY_ARG_END } },
258 
259  { EKG_SIGUSR1, "sigusr1", {
260  QUERY_ARG_END } }, /* no params */
261 
262  { EKG_SIGUSR2, "sigusr2", {
263  QUERY_ARG_END } }, /* no params */
264 
265  { CONFIG_POSTINIT, "config-postinit", {
266  QUERY_ARG_END } }, /* no params */
267 
268  { QUITTING, "quitting", {
269  /* XXX, emited, but never used */
270  QUERY_ARG_CHARP, /* reason */
271  QUERY_ARG_END } },
272 
273  { IRC_TOPIC, "irc-topic", {
274  QUERY_ARG_CHARP, /* if CHANNEL -> topic; if USER -> ident@host */
275  QUERY_ARG_CHARP, /* if CHANNEL -> topicby; if USER -> realname */
276  QUERY_ARG_CHARP, /* if CHANNEL -> chanmodes; if USER -> undefined */
277  QUERY_ARG_END } },
278 
279  { IRC_PROTOCOL_MESSAGE, "irc-protocol-message", {
280  QUERY_ARG_CHARP, /* session uid */
281  QUERY_ARG_CHARP, /* uid */
282  QUERY_ARG_CHARP, /* text */
283  QUERY_ARG_INT, /* isour */
284  QUERY_ARG_INT, /* foryou */
285  QUERY_ARG_INT, /* private */
286  QUERY_ARG_CHARP, /* channame */
287  QUERY_ARG_END } },
288 
289  { IRC_KICK, "irc-kick", {
290  QUERY_ARG_CHARP, /* session uid */
291  QUERY_ARG_CHARP, /* nick */
292  QUERY_ARG_CHARP, /* channel */
293  QUERY_ARG_CHARP, /* kickedby */
294  QUERY_ARG_END } },
295 
296  { RSS_MESSAGE, "rss-message", {
297  QUERY_ARG_CHARP, /* session uid */
298  QUERY_ARG_CHARP, /* uid */
299  QUERY_ARG_CHARP, /* proto headers */
300  QUERY_ARG_CHARP, /* headers */
301  QUERY_ARG_CHARP, /* title */
302  QUERY_ARG_CHARP, /* url */
303  QUERY_ARG_CHARP, /* descr */
304  QUERY_ARG_INT, /* new */
305  QUERY_ARG_INT, /* modify */
306  QUERY_ARG_END } },
307 
308  { PROTOCOL_CONNECTED, "protocol-connected", {
309  QUERY_ARG_CHARP, /* session */
310  QUERY_ARG_END } },
311 
312  { PROTOCOL_DISCONNECTED, "protocol-disconnected", {
313  QUERY_ARG_CHARP, /* session */
314  QUERY_ARG_CHARP, /* reason */
315  QUERY_ARG_INT, /* type */
316  QUERY_ARG_END } },
317 
318  { PROTOCOL_MESSAGE, "protocol-message", {
319  QUERY_ARG_CHARP, /* session uid */
320  QUERY_ARG_CHARP, /* uid */
321  QUERY_ARG_CHARPP, /* rcpts */
322  QUERY_ARG_CHARP, /* text */
323  QUERY_ARG_UINT, /* uint32 */ /* format */
324  QUERY_ARG_UINT, /* time_t */ /* sent */
325  QUERY_ARG_INT, /* mclass */
326  QUERY_ARG_CHARP, /* seq */
327  QUERY_ARG_INT, /* dobeep */
328  QUERY_ARG_INT, /* secure */
329  QUERY_ARG_END } },
330 
331  { PROTOCOL_MESSAGE_ACK, "protocol-message-ack", {
332  QUERY_ARG_CHARP, /* session uid */
333  QUERY_ARG_CHARP, /* uid */
334  QUERY_ARG_CHARP, /* seq */
335  QUERY_ARG_INT, /* status */
336  QUERY_ARG_END } },
337 
338  { PROTOCOL_STATUS, "protocol-status", {
339  QUERY_ARG_CHARP, /* session uid */
340  QUERY_ARG_CHARP, /* uid */
341  QUERY_ARG_INT, /* status */
342  QUERY_ARG_CHARP, /* descr */
343  QUERY_ARG_UINT, /* time_t */ /* when */
344  QUERY_ARG_END } },
345 
346  { PROTOCOL_VALIDATE_UID, "protocol-validate-uid", {
347  QUERY_ARG_CHARP, /* uid */
348  QUERY_ARG_INT, /* valid */
349  QUERY_ARG_END } },
350 
351  { PROTOCOL_XSTATE, "protocol-xstate", {
352  QUERY_ARG_CHARP, /* session */
353  QUERY_ARG_CHARP, /* uid */
354  QUERY_ARG_INT, /* state - bits on */
355  QUERY_ARG_INT, /* offstate - bits off */
356  QUERY_ARG_END } },
357 
358  { ADD_NOTIFY, "add-notify", {
359  /* XXX */
360  QUERY_ARG_END } },
361 
362  { REMOVE_NOTIFY, "remove-notify", {
363  /* XXX */
364  QUERY_ARG_END } },
365 
366  { PROTOCOL_IGNORE, "protocol-ignore", {
367  QUERY_ARG_CHARP, /* session uid */
368  QUERY_ARG_CHARP, /* uid */
369  QUERY_ARG_INT, /* oldlevel */
370  QUERY_ARG_INT, /* newlevel */
371  QUERY_ARG_END } },
372 
373  { PROTOCOL_UNIGNORE, "protocol-unignore", {
374  /* XXX */
375  QUERY_ARG_END } },
376 
377  { CONFERENCE_RENAMED, "conference-renamed", {
378  /* XXX */
379  QUERY_ARG_END } },
380 
381  { UI_BEEP, "ui-beep", {
382  QUERY_ARG_END } }, /* no params */
383 
384  { UI_IS_INITIALIZED, "ui-is-initialized", {
385  QUERY_ARG_INT, /* is_ui */
386  QUERY_ARG_END } },
387 
388  { UI_KEYPRESS, "ui-keypress", {
389  QUERY_ARG_INT, /* XXX uint? *//* key */
390  QUERY_ARG_END } },
391 
392  { UI_LOOP, "ui-loop", {
393  QUERY_ARG_END } }, /* no params */
394 
395  { UI_WINDOW_ACT_CHANGED, "ui-window-act-changed", {
396  QUERY_ARG_WINDOW, /* window */
397  QUERY_ARG_END } },
398 
399  { UI_WINDOW_CLEAR, "ui-window-clear", {
400  QUERY_ARG_WINDOW, /* window */
401  QUERY_ARG_END } },
402 
403  { UI_WINDOW_KILL, "ui-window-kill", {
404  QUERY_ARG_WINDOW, /* window */
405  QUERY_ARG_END } },
406 
407  { UI_WINDOW_NEW, "ui-window-new", {
408  QUERY_ARG_WINDOW, /* window */
409  QUERY_ARG_END } },
410 
411  { UI_WINDOW_PRINT, "ui-window-print", {
412  QUERY_ARG_WINDOW, /* window */
413  QUERY_ARG_FSTRING, /* fstring_t */
414  QUERY_ARG_END } },
415 
416  { UI_WINDOW_REFRESH, "ui-window-refresh", {
417  QUERY_ARG_END } }, /* no params */
418 
419  { UI_WINDOW_SWITCH, "ui-window-switch", {
420  QUERY_ARG_WINDOW, /* window */
421  QUERY_ARG_END } },
422 
423  { UI_WINDOW_TARGET_CHANGED , "ui-window-target-changed", {
424  QUERY_ARG_WINDOW, /* window */
425  QUERY_ARG_END } },
426 
427 /* GPG: PARAMS XXX */
428  { GPG_MESSAGE_ENCRYPT, "gpg-message-encrypt", {
429  QUERY_ARG_END } },
430 
431  { GPG_MESSAGE_DECRYPT, "gpg-message-decrypt", {
432  QUERY_ARG_END } },
433 
434  { GPG_SIGN, "gpg-sign", {
435  QUERY_ARG_END } },
436 
437  { GPG_VERIFY, "gpg-verify", {
438  QUERY_ARG_END } },
439 
440  { UI_WINDOW_UPDATE_LASTLOG, "ui-window-update-lastlog", {
441  QUERY_ARG_END } },
442 
443  { SESSION_EVENT, "session-event", {
444  QUERY_ARG_SESSION, /* session */
445  QUERY_ARG_INT, /* event type, [not used] */
446  QUERY_ARG_END } },
447 
448  { UI_REFRESH, "ui-refresh", {
449  QUERY_ARG_END } },
450 
451  { PROTOCOL_TYPING_OUT, "protocol-typing-out", {
452  QUERY_ARG_CHARP, /* session uid */
453  QUERY_ARG_CHARP, /* uid */
454  QUERY_ARG_INT, /* typed-in data length */
455  QUERY_ARG_INT, /* whether this is first typing notification in order
456  or only length change */
457  QUERY_ARG_END } },
458 
459  { UI_PASSWORD_INPUT, "ui-password-input", {
460  QUERY_ARG_CHARP, /* password pointer storage */
461  QUERY_ARG_CHARP, /* alternate input prompt (&NULL = default) */
462  QUERY_ARG_CHARP, /* alternate repeat prompt (&NULL = default, NULL = no) */
463  QUERY_ARG_END } },
464 
465  { PROTOCOL_DISCONNECTING, "protocol-disconnecting", { /* meant to be send before user-initiated disconnect,
466  when we can still send some data, e.g. <gone/> chatstate */
467  QUERY_ARG_CHARP, /* session uid */
468  QUERY_ARG_END } },
469 
470  { USERLIST_REFRESH, "userlist-refresh", {
471  QUERY_ARG_END } },
472 
473  { EVENT_OFFLINE, "event_offline", {
474  QUERY_ARG_CHARP, /* session uid */
475  QUERY_ARG_CHARP, /* uid */
476  QUERY_ARG_END } },
477 };
478 
479 /* other, not listed above here queries, for example plugin which use internally his own query,
480  * and if devel of that plugin doesn't want share with us info about that plugin..
481  * can use query_connect() query_emit() and it will work... however, binding that query from scripts/events (/on) won't work.. untill devel fill query_arg_type...
482  */
483 
484 static list_t queries_external;
485 static int queries_count = QUERY_EXTERNAL; /* list_count(queries_other)+QUERY_EXTERNAL */
486 #else
487 
488 extern struct query_def query_list[]; /* for: events.h scripts.h */
489 
490 #endif
491 
492 #ifdef __cplusplus
493 }
494 #endif
495 
496 #endif
497