summaryrefslogtreecommitdiff
path: root/src/core/servers-redirect.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/servers-redirect.h')
-rw-r--r--src/core/servers-redirect.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/servers-redirect.h b/src/core/servers-redirect.h
new file mode 100644
index 00000000..b47f7b3d
--- /dev/null
+++ b/src/core/servers-redirect.h
@@ -0,0 +1,38 @@
+#ifndef __SERVERS_REDIRECT_H
+#define __SERVERS_REDIRECT_H
+
+#include "servers.h"
+
+typedef struct {
+ int last; /* number of "last" events at the start of the events list */
+ GSList *events; /* char* list of events */
+} REDIRECT_CMD_REC;
+
+typedef struct {
+ char *name; /* event name */
+
+ char *arg; /* argument for event we are expecting or NULL */
+ int argpos; /* argument position */
+
+ int group; /* group of events this belongs to */
+ int last; /* if this event is received, remove all the events in this group */
+}
+REDIRECT_REC;
+
+void server_redirect_init(SERVER_REC *server, const char *command, int last, ...);
+void server_redirect_initv(SERVER_REC *server, const char *command, int last, GSList *list);
+/* ... = char *event1, char *event2, ..., NULL */
+
+void server_redirect_event(SERVER_REC *server, const char *arg, int last, ...);
+/* ... = char *event, char *callback_signal, int argpos, ..., NULL */
+
+int server_redirect_single_event(SERVER_REC *server, const char *arg, int last, int group,
+ const char *event, const char *signal, int argpos);
+void server_redirect_default(SERVER_REC *server, const char *command);
+void server_redirect_remove_next(SERVER_REC *server, const char *event, GSList *item);
+GSList *server_redirect_getqueue(SERVER_REC *server, const char *event, const char *args);
+
+void servers_redirect_init(void);
+void servers_redirect_deinit(void);
+
+#endif