ekg2
ekg/queries.h
Idź do dokumentacji tego pliku.
00001 #ifndef __EKG_QUERIES
00002 #define __EKG_QUERIES
00003 
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 
00008 #define QUERY_ARGS_MAX 12
00009 
00010 enum query_arg_type {
00011         QUERY_ARG_END = 0,      /* MUSTBE LAST ELEMENT OF `query_arg_type` */
00012 
00013         QUERY_ARG_CHARP,        /* char *       */
00014         QUERY_ARG_CHARPP,       /* char **      */
00015         QUERY_ARG_INT,          /* int */
00016         QUERY_ARG_UINT,         /* unsgined int */              /* -> time_t, uint32_t */
00017 
00018         QUERY_ARG_WINDOW = 100, /* window_t     */
00019         QUERY_ARG_FSTRING,      /* fstring_t    */
00020         QUERY_ARG_USERLIST,     /* userlist_t   */
00021         QUERY_ARG_SESSION       /* session_t    */
00022 };
00023 
00024 struct query_def {
00025         int id;
00026         char *name;
00027         enum query_arg_type params[QUERY_ARGS_MAX];     /* scripts will use it */
00028 };
00029 
00030 /* uniq id of known queries..., add new just before QUERY_EXTERNAL */
00031 enum queries_id {
00032         MAIL_COUNT = 0, DAY_CHANGED, STATUS_SHOW, PLUGIN_PRINT_VERSION,
00033         SET_VARS_DEFAULT, VARIABLE_CHANGED,
00034 
00035         BINDING_COMMAND, BINDING_DEFAULT, BINDING_SET,                                          /* bindings */
00036         EVENT_ADDED, EVENT_REMOVED,                                                             /* event events */
00037         MESSAGE_ENCRYPT, MESSAGE_DECRYPT,                                                       /* encryption */
00038         METACONTACT_ADDED, METACONTACT_ITEM_ADDED, METACONTACT_ITEM_REMOVED, METACONTACT_REMOVED,/* metacontact */
00039         PROTOCOL_MESSAGE_SENT, PROTOCOL_MESSAGE_RECEIVED, PROTOCOL_MESSAGE_POST,                /* proto-message-events */
00040         EVENT_AWAY, EVENT_AVAIL, EVENT_DESCR, EVENT_ONLINE, EVENT_NA,                           /* status-events */
00041         USERLIST_ADDED, USERLIST_CHANGED, USERLIST_REMOVED, USERLIST_RENAMED, USERLIST_INFO,    /* userlist */
00042         USERLIST_PRIVHANDLE,
00043         SESSION_ADDED, SESSION_CHANGED, SESSION_REMOVED, SESSION_RENAMED, SESSION_STATUS,       /* session */
00044         EKG_SIGUSR1, EKG_SIGUSR2,                                                               /* signals */
00045         CONFIG_POSTINIT, QUITTING,                                                              /* ekg-events */
00046 
00047         IRC_TOPIC, IRC_PROTOCOL_MESSAGE, IRC_KICK,                                              /* irc-events */
00048         RSS_MESSAGE,                                                                            /* rss-events */
00049 
00050         PROTOCOL_CONNECTED, PROTOCOL_DISCONNECTED, PROTOCOL_MESSAGE, PROTOCOL_MESSAGE_ACK, PROTOCOL_STATUS,
00051         PROTOCOL_VALIDATE_UID, PROTOCOL_XSTATE,
00052 
00053         ADD_NOTIFY, REMOVE_NOTIFY,
00054         PROTOCOL_IGNORE, PROTOCOL_UNIGNORE,
00055 
00056         CONFERENCE_RENAMED,
00057 
00058         UI_BEEP, UI_IS_INITIALIZED, UI_KEYPRESS, UI_LOOP, UI_WINDOW_ACT_CHANGED,
00059         UI_WINDOW_CLEAR, UI_WINDOW_KILL, UI_WINDOW_NEW, UI_WINDOW_PRINT, UI_WINDOW_REFRESH,
00060         UI_WINDOW_SWITCH, UI_WINDOW_TARGET_CHANGED,
00061 
00062         GPG_MESSAGE_ENCRYPT, GPG_MESSAGE_DECRYPT, GPG_SIGN, GPG_VERIFY,
00063 
00064         UI_WINDOW_UPDATE_LASTLOG,
00065         SESSION_EVENT,
00066         UI_REFRESH,
00067         PROTOCOL_TYPING_OUT,
00068         UI_PASSWORD_INPUT,
00069         PROTOCOL_DISCONNECTING,
00070 
00071         USERLIST_REFRESH,
00072 
00073         EVENT_OFFLINE,
00074 
00075         QUERY_EXTERNAL,
00076 };
00077 
00078 #ifdef __DECLARE_QUERIES_STUFF
00079 #undef __DECLARE_QUERIES_STUFF
00080 
00081 /* list of known queries. keep it sorted with enum. */
00082 
00083 const struct query_def query_list[] = {
00084         { MAIL_COUNT, "mail-count", {
00085                 QUERY_ARG_INT,                  /* mail count */
00086                 QUERY_ARG_END } },
00087 
00088         { DAY_CHANGED, "day-changed", {
00089                 /* XXX: struct tm *, struct tm * */
00090                 QUERY_ARG_END } },
00091 
00092         { STATUS_SHOW, "status-show", {
00093                 QUERY_ARG_CHARP,                /* session uid */
00094                 QUERY_ARG_END } },
00095 
00096         { PLUGIN_PRINT_VERSION, "plugin-print-version", {
00097                 QUERY_ARG_END } },              /* no params */
00098 
00099         { SET_VARS_DEFAULT, "set-vars-default", {
00100                 QUERY_ARG_END } },              /* no params */
00101 
00102         { VARIABLE_CHANGED, "variable-changed", {
00103                 QUERY_ARG_CHARP,                /* variable */
00104                 QUERY_ARG_END } },
00105 
00106         { BINDING_COMMAND, "binding-command", {
00107                 /* XXX */
00108                 QUERY_ARG_END } },
00109 
00110         { BINDING_DEFAULT, "binding-default", {
00111                 /* XXX */
00112                 QUERY_ARG_END } },
00113 
00114         { BINDING_SET, "binding-set", {
00115                 /* XXX */
00116                 QUERY_ARG_END } },
00117 
00118         { EVENT_ADDED, "event-added", {
00119                 QUERY_ARG_CHARP,                /* event name */
00120                 QUERY_ARG_END } },
00121 
00122         { EVENT_REMOVED, "event-removed", {
00123                 /* XXX, never used */
00124                 QUERY_ARG_END } },
00125 
00126         { MESSAGE_ENCRYPT, "message-encrypt", {
00127                 /* XXX */
00128                 QUERY_ARG_END } },
00129 
00130         { MESSAGE_DECRYPT, "message-decrypt", {
00131                 /* XXX */
00132                 QUERY_ARG_END } },
00133         
00134         { METACONTACT_ADDED, "metacontact-added", {
00135                 QUERY_ARG_CHARP,                /* metacontact name */
00136                 QUERY_ARG_END } },
00137 
00138         { METACONTACT_ITEM_ADDED, "metacontact-item-added", {
00139                 /* XXX */
00140                 QUERY_ARG_END } },
00141         
00142         { METACONTACT_ITEM_REMOVED, "metacontact-item-removed", {
00143                 /* XXX */
00144                 QUERY_ARG_END } },
00145 
00146         { METACONTACT_REMOVED, "metacontact-removed", {
00147                 QUERY_ARG_CHARP,                /* metacontact name */
00148                 QUERY_ARG_END } },
00149 
00150         { PROTOCOL_MESSAGE_SENT, "protocol-message-sent", {
00151                 QUERY_ARG_CHARP,        /* session */
00152                 QUERY_ARG_CHARP,        /* uid */
00153                 QUERY_ARG_CHARP,        /* text */
00154                 QUERY_ARG_END } },
00155 
00156         { PROTOCOL_MESSAGE_RECEIVED, "protocol-message-received", {
00157                 QUERY_ARG_CHARP,                /* session uid */
00158                 QUERY_ARG_CHARP,                /* uid */
00159                 QUERY_ARG_CHARPP,               /* rcpts */
00160                 QUERY_ARG_CHARP,                /* text */
00161                 QUERY_ARG_UINT, /* uint32_t */  /* format */
00162                 QUERY_ARG_UINT, /* time_t */    /* sent */
00163                 QUERY_ARG_INT,                  /* mclass */
00164                 QUERY_ARG_CHARP,                /* seq */
00165                 QUERY_ARG_INT,                  /* secure */
00166                 QUERY_ARG_END } },
00167 
00168         { PROTOCOL_MESSAGE_POST, "protocol-message-post", {
00169                 QUERY_ARG_CHARP,                /* session uid */
00170                 QUERY_ARG_CHARP,                /* uid */
00171                 QUERY_ARG_CHARPP,               /* rcpts */
00172                 QUERY_ARG_UINT, /* uint32_t */  /* format */
00173                 QUERY_ARG_UINT, /* time_t */    /* sent */
00174                 QUERY_ARG_INT,                  /* mclass */
00175                 QUERY_ARG_CHARP,                /* seq */
00176                 QUERY_ARG_INT,                  /* secure */
00177                 QUERY_ARG_END } }, 
00178 
00179         { EVENT_AWAY, "event_away", {
00180                 QUERY_ARG_CHARP,                /* session uid */
00181                 QUERY_ARG_CHARP,                /* uid */
00182                 QUERY_ARG_END } },
00183 
00184         { EVENT_AVAIL, "event_avail", {
00185                 /* XXX, emited, but noone connect to this. */
00186                 QUERY_ARG_CHARP,                /* session uid */
00187                 QUERY_ARG_CHARP,                /* uid */
00188                 QUERY_ARG_END } },
00189 
00190         { EVENT_DESCR, "event_descr", {
00191                 QUERY_ARG_CHARP,                /* session uid */
00192                 QUERY_ARG_CHARP,                /* uid */
00193                 QUERY_ARG_CHARP,                /* descr */
00194                 QUERY_ARG_END } },
00195 
00196         { EVENT_ONLINE, "event_online", {
00197                 QUERY_ARG_CHARP,                /* session uid */
00198                 QUERY_ARG_CHARP,                /* uid */
00199                 QUERY_ARG_END } },
00200 
00201         { EVENT_NA, "event_na", {
00202                 QUERY_ARG_CHARP,                /* session uid */
00203                 QUERY_ARG_CHARP,                /* uid */
00204                 QUERY_ARG_END } },
00205 
00206         { USERLIST_ADDED, "userlist-added", {
00207                 /* XXX, we need here a session->uid too (?) */
00208 
00209                 QUERY_ARG_CHARP,                /* uid */
00210                 QUERY_ARG_CHARP,                /* nickname */
00211                 QUERY_ARG_INT,                  /* quiet */
00212                 QUERY_ARG_END } },
00213 
00214         { USERLIST_CHANGED, "userlist-changed", {
00215                 QUERY_ARG_CHARP,                /* session uid */
00216                 QUERY_ARG_CHARP,                /* uid */
00217                 QUERY_ARG_END } },
00218 
00219         { USERLIST_REMOVED, "userlist-removed", {
00220                 /* XXX, we need here a session->uid too (?) */
00221 
00222                 QUERY_ARG_CHARP,                /* nickname or uid */
00223                 QUERY_ARG_CHARP,                /* uid */
00224                 QUERY_ARG_END } },
00225 
00226         { USERLIST_RENAMED, "userlist-renamed", {
00227                 /* XXX */
00228                 QUERY_ARG_END } },
00229 
00230         { USERLIST_INFO, "userlist-info", {
00231                 /* XXX */
00232                 QUERY_ARG_END } },
00233 
00234         { USERLIST_PRIVHANDLE, "userlist-privhandle", {
00235                 QUERY_ARG_USERLIST,             /* userlist_t */
00236                 QUERY_ARG_INT,                  /* function */
00237                 /* optional things? */
00238                 QUERY_ARG_END } },
00239 
00240         { SESSION_ADDED, "session-added", {
00241                 QUERY_ARG_CHARP,                /* session uid */
00242                 QUERY_ARG_END } },
00243 
00244         { SESSION_CHANGED, "session-changed", {
00245                 QUERY_ARG_END } },              /* no params */
00246 
00247         { SESSION_REMOVED, "session-removed", {
00248                 QUERY_ARG_CHARP,                /* session uid */
00249                 QUERY_ARG_END } },
00250 
00251         { SESSION_RENAMED, "session-renamed", {
00252                 QUERY_ARG_CHARP,                /* new session alias */
00253                 QUERY_ARG_END } },
00254 
00255         { SESSION_STATUS, "session-status", {
00256                 /* XXX */
00257                 QUERY_ARG_END } },
00258 
00259         { EKG_SIGUSR1, "sigusr1", {
00260                 QUERY_ARG_END } },              /* no params */
00261 
00262         { EKG_SIGUSR2, "sigusr2", {
00263                 QUERY_ARG_END } },              /* no params */
00264 
00265         { CONFIG_POSTINIT, "config-postinit", {
00266                 QUERY_ARG_END } },              /* no params */
00267 
00268         { QUITTING, "quitting", {
00269                 /* XXX, emited, but never used */
00270                 QUERY_ARG_CHARP,                /* reason */
00271                 QUERY_ARG_END } },
00272 
00273         { IRC_TOPIC, "irc-topic", {
00274                 QUERY_ARG_CHARP,                /* if CHANNEL -> topic;         if USER -> ident@host */
00275                 QUERY_ARG_CHARP,                /* if CHANNEL -> topicby;       if USER -> realname */
00276                 QUERY_ARG_CHARP,                /* if CHANNEL -> chanmodes;     if USER -> undefined */
00277                 QUERY_ARG_END } },
00278 
00279         { IRC_PROTOCOL_MESSAGE, "irc-protocol-message", {
00280                 QUERY_ARG_CHARP,                /* session uid */
00281                 QUERY_ARG_CHARP,                /* uid */
00282                 QUERY_ARG_CHARP,                /* text */
00283                 QUERY_ARG_INT,                  /* isour */
00284                 QUERY_ARG_INT,                  /* foryou */
00285                 QUERY_ARG_INT,                  /* private */
00286                 QUERY_ARG_CHARP,                /* channame */
00287                 QUERY_ARG_END } },
00288 
00289         { IRC_KICK, "irc-kick", {
00290                 QUERY_ARG_CHARP,                /* session uid */
00291                 QUERY_ARG_CHARP,                /* nick */
00292                 QUERY_ARG_CHARP,                /* channel */
00293                 QUERY_ARG_CHARP,                /* kickedby */
00294                 QUERY_ARG_END } },
00295 
00296         { RSS_MESSAGE, "rss-message", {
00297                 QUERY_ARG_CHARP,                /* session uid */
00298                 QUERY_ARG_CHARP,                /* uid */
00299                 QUERY_ARG_CHARP,                /* proto headers */
00300                 QUERY_ARG_CHARP,                /* headers */
00301                 QUERY_ARG_CHARP,                /* title */
00302                 QUERY_ARG_CHARP,                /* url */
00303                 QUERY_ARG_CHARP,                /* descr */
00304                 QUERY_ARG_INT,                  /* new */
00305                 QUERY_ARG_INT,                  /* modify */
00306                 QUERY_ARG_END } },
00307 
00308         { PROTOCOL_CONNECTED, "protocol-connected", {
00309                 QUERY_ARG_CHARP,                /* session */
00310                 QUERY_ARG_END } }, 
00311 
00312         { PROTOCOL_DISCONNECTED, "protocol-disconnected", {
00313                 QUERY_ARG_CHARP,                /* session */
00314                 QUERY_ARG_CHARP,                /* reason */
00315                 QUERY_ARG_INT,                  /* type */
00316                 QUERY_ARG_END } }, 
00317 
00318         { PROTOCOL_MESSAGE, "protocol-message", {
00319                 QUERY_ARG_CHARP,                /* session uid */
00320                 QUERY_ARG_CHARP,                /* uid */
00321                 QUERY_ARG_CHARPP,               /* rcpts */
00322                 QUERY_ARG_CHARP,                /* text */
00323                 QUERY_ARG_UINT, /* uint32 */    /* format */
00324                 QUERY_ARG_UINT, /* time_t */    /* sent */
00325                 QUERY_ARG_INT,                  /* mclass */
00326                 QUERY_ARG_CHARP,                /* seq */
00327                 QUERY_ARG_INT,                  /* dobeep */
00328                 QUERY_ARG_INT,                  /* secure */
00329                 QUERY_ARG_END } },
00330 
00331         { PROTOCOL_MESSAGE_ACK, "protocol-message-ack", {
00332                 QUERY_ARG_CHARP,                /* session uid */
00333                 QUERY_ARG_CHARP,                /* uid */
00334                 QUERY_ARG_CHARP,                /* seq */
00335                 QUERY_ARG_INT,                  /* status */
00336                 QUERY_ARG_END } },
00337 
00338         { PROTOCOL_STATUS, "protocol-status", {
00339                 QUERY_ARG_CHARP,                /* session uid */
00340                 QUERY_ARG_CHARP,                /* uid */
00341                 QUERY_ARG_INT,                  /* status */
00342                 QUERY_ARG_CHARP,                /* descr */
00343                 QUERY_ARG_UINT, /* time_t */    /* when */
00344                 QUERY_ARG_END } }, 
00345 
00346         { PROTOCOL_VALIDATE_UID, "protocol-validate-uid", {
00347                 QUERY_ARG_CHARP,                /* uid */
00348                 QUERY_ARG_INT,                  /* valid */
00349                 QUERY_ARG_END } },
00350 
00351         { PROTOCOL_XSTATE, "protocol-xstate", {
00352                 QUERY_ARG_CHARP,                /* session */
00353                 QUERY_ARG_CHARP,                /* uid */
00354                 QUERY_ARG_INT,                  /* state        - bits on */
00355                 QUERY_ARG_INT,                  /* offstate     - bits off */
00356                 QUERY_ARG_END } },
00357 
00358         { ADD_NOTIFY, "add-notify", {
00359                 /* XXX */
00360                 QUERY_ARG_END } },
00361 
00362         { REMOVE_NOTIFY, "remove-notify", {
00363                 /* XXX */
00364                 QUERY_ARG_END } },
00365 
00366         { PROTOCOL_IGNORE, "protocol-ignore", {
00367                 QUERY_ARG_CHARP,                /* session uid */
00368                 QUERY_ARG_CHARP,                /* uid */
00369                 QUERY_ARG_INT,                  /* oldlevel */
00370                 QUERY_ARG_INT,                  /* newlevel */
00371                 QUERY_ARG_END } },
00372 
00373         { PROTOCOL_UNIGNORE, "protocol-unignore", {
00374                 /* XXX */
00375                 QUERY_ARG_END } },
00376 
00377         { CONFERENCE_RENAMED, "conference-renamed", {
00378                 /* XXX */
00379                 QUERY_ARG_END } },
00380 
00381         { UI_BEEP, "ui-beep", {
00382                 QUERY_ARG_END } },              /* no params */
00383 
00384         { UI_IS_INITIALIZED, "ui-is-initialized", {
00385                 QUERY_ARG_INT,                  /* is_ui */
00386                 QUERY_ARG_END } }, 
00387 
00388         { UI_KEYPRESS, "ui-keypress", {
00389                 QUERY_ARG_INT,   /* XXX uint? *//* key */
00390                 QUERY_ARG_END } },
00391 
00392         { UI_LOOP, "ui-loop", {
00393                 QUERY_ARG_END } },              /* no params */
00394 
00395         { UI_WINDOW_ACT_CHANGED, "ui-window-act-changed", {
00396                 QUERY_ARG_WINDOW,               /* window */
00397                 QUERY_ARG_END } },
00398 
00399         { UI_WINDOW_CLEAR, "ui-window-clear", {
00400                 QUERY_ARG_WINDOW,               /* window */
00401                 QUERY_ARG_END } },
00402 
00403         { UI_WINDOW_KILL, "ui-window-kill", {
00404                 QUERY_ARG_WINDOW,               /* window */
00405                 QUERY_ARG_END } },
00406 
00407         { UI_WINDOW_NEW, "ui-window-new", {
00408                 QUERY_ARG_WINDOW,               /* window */
00409                 QUERY_ARG_END } }, 
00410 
00411         { UI_WINDOW_PRINT, "ui-window-print", {
00412                 QUERY_ARG_WINDOW,               /* window */
00413                 QUERY_ARG_FSTRING,              /* fstring_t */
00414                 QUERY_ARG_END } }, 
00415 
00416         { UI_WINDOW_REFRESH, "ui-window-refresh", {
00417                 QUERY_ARG_END } },              /* no params */
00418 
00419         { UI_WINDOW_SWITCH, "ui-window-switch", {
00420                 QUERY_ARG_WINDOW,               /* window */
00421                 QUERY_ARG_END } },
00422 
00423         { UI_WINDOW_TARGET_CHANGED , "ui-window-target-changed", {
00424                 QUERY_ARG_WINDOW,               /* window */
00425                 QUERY_ARG_END } },
00426 
00427 /* GPG: PARAMS XXX */
00428         { GPG_MESSAGE_ENCRYPT, "gpg-message-encrypt", {
00429                 QUERY_ARG_END } },
00430 
00431         { GPG_MESSAGE_DECRYPT, "gpg-message-decrypt", {
00432                 QUERY_ARG_END } },
00433 
00434         { GPG_SIGN, "gpg-sign", {
00435                 QUERY_ARG_END } },
00436 
00437         { GPG_VERIFY, "gpg-verify", {
00438                 QUERY_ARG_END } },
00439 
00440         { UI_WINDOW_UPDATE_LASTLOG, "ui-window-update-lastlog", {
00441                 QUERY_ARG_END } },
00442 
00443         { SESSION_EVENT, "session-event", {
00444                 QUERY_ARG_SESSION,              /* session */
00445                 QUERY_ARG_INT,                  /* event type, [not used] */
00446                 QUERY_ARG_END } },
00447 
00448         { UI_REFRESH, "ui-refresh", {
00449                 QUERY_ARG_END } },
00450 
00451         { PROTOCOL_TYPING_OUT, "protocol-typing-out", {
00452                 QUERY_ARG_CHARP,                /* session uid */
00453                 QUERY_ARG_CHARP,                /* uid */
00454                 QUERY_ARG_INT,                  /* typed-in data length */
00455                 QUERY_ARG_INT,                  /* whether this is first typing notification in order
00456                                                    or only length change */
00457                 QUERY_ARG_END } },
00458 
00459         { UI_PASSWORD_INPUT, "ui-password-input", {
00460                 QUERY_ARG_CHARP,                /* password pointer storage */
00461                 QUERY_ARG_CHARP,                /* alternate input prompt (&NULL = default) */
00462                 QUERY_ARG_CHARP,                /* alternate repeat prompt (&NULL = default, NULL = no) */
00463                 QUERY_ARG_END } },
00464 
00465         { PROTOCOL_DISCONNECTING, "protocol-disconnecting", { /* meant to be send before user-initiated disconnect,
00466                                                                  when we can still send some data, e.g. <gone/> chatstate */
00467                 QUERY_ARG_CHARP,                /* session uid */
00468                 QUERY_ARG_END } },
00469 
00470         { USERLIST_REFRESH, "userlist-refresh", {
00471                 QUERY_ARG_END } },
00472 
00473         { EVENT_OFFLINE, "event_offline", {
00474                 QUERY_ARG_CHARP,                /* session uid */
00475                 QUERY_ARG_CHARP,                /* uid */
00476                 QUERY_ARG_END } },
00477 };
00478 
00479 /* other, not listed above here queries, for example plugin which use internally his own query, 
00480  * and if devel of that plugin doesn't want share with us info about that plugin..
00481  * 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...
00482  */
00483 
00484 static list_t queries_external;
00485 static int queries_count = QUERY_EXTERNAL;      /* list_count(queries_other)+QUERY_EXTERNAL */
00486 #else
00487 
00488 extern struct query_def query_list[];           /* for: events.h scripts.h */
00489 
00490 #endif
00491 
00492 #ifdef __cplusplus
00493 }
00494 #endif
00495 
00496 #endif
00497 
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje