ekg/queries.h

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

Generated on Sat Nov 22 22:30:42 2008 for ekg2 by  doxygen 1.5.1