]> Pileus Git - ~andy/lamechat/blobdiff - chat.h
Cleanup xmpp users.
[~andy/lamechat] / chat.h
diff --git a/chat.h b/chat.h
index 5779d4fc00e78f70e4657464160d47fbf1e8e3ab..38bcfda3824072968425f793e21723aa1efb492f 100644 (file)
--- a/chat.h
+++ b/chat.h
 /* Message Types */
 typedef unsigned long long stamp_t;
 
-typedef struct {
-       stamp_t  when;
-       char    *channel;
-       char    *from;
-       char    *msg;
-} log_t;
+typedef struct server_t  server_t;
+typedef struct channel_t channel_t;
+typedef struct user_t    user_t;
 
-typedef struct {
-       char    *name;
+typedef enum {
+       IRC,
+       XMPP,
+} protocol_t;
+
+typedef struct server_t {
+       protocol_t  protocol;
+       char       *name;
+       server_t   *next;
+} server_t;
+
+typedef struct channel_t {
+       server_t   *server;
+       char       *name;
+       char       *topic;
+       FILE       *log;
+       int         seen;
+       channel_t  *next;
 } channel_t;
 
+typedef struct user_t {
+       server_t   *server;
+       char       *name;
+       user_t     *alias;
+       user_t     *next;
+} user_t;
+
+typedef struct {
+       stamp_t     when;
+       channel_t  *channel;
+       user_t     *from;
+       char       *text;
+} message_t;
+
 /* Global Data */
-extern log_t *chat_log;
-extern int    chat_len;
+extern server_t  *servers;
+extern channel_t *channels;
+extern user_t    *users;
+extern message_t *messages;
+extern int        history;
 
 /* Chat functions */
 void chat_init(void);
-void chat_config(const char *group, const char *name, const char *key, const char *value);
-void chat_recv(const char *channel, const char *from, const char *msg);
-void chat_send(const char *channel, const char *msg);
+void chat_config(const char *group, const char *name,
+                 const char *key, const char *value);
+void chat_recv(channel_t *channel, user_t *from, const char *text);
+void chat_send(channel_t *channel, const char *text);
 void chat_exit(void);
 
-/* Protocol functions */
-extern void irc_init(void);
-extern void irc_config(const char *group, const char *name, const char *key, const char *value);
-extern void irc_send(const char *channel, const char *msg);
+void add_server(server_t *server);
+void add_channel(channel_t *channel);
+void add_user(user_t *user);
+
+/* IRC functions */
+extern void irc_config(server_t *server, channel_t *channel,
+                       const char *group, const char *name,
+                       const char *key, const char *value);
+extern void irc_send(channel_t *channel, const char *text);
 extern void irc_exit(void);
+extern void irc_init(void);
 
+/* XMPP functions */
 extern void xmpp_init(void);
-extern void xmpp_config(const char *group, const char *name, const char *key, const char *value);
-extern void xmpp_send(const char *channel, const char *msg);
+extern void xmpp_config(server_t *server, channel_t *channel,
+                        const char *group, const char *name,
+                        const char *key, const char *value);
+extern void xmpp_send(channel_t *channel, const char *text);
 extern void xmpp_exit(void);