aboutsummaryrefslogtreecommitdiff
path: root/weechat/net.h
diff options
context:
space:
mode:
Diffstat (limited to 'weechat/net.h')
-rw-r--r--weechat/net.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/weechat/net.h b/weechat/net.h
new file mode 100644
index 0000000..59f5f45
--- /dev/null
+++ b/weechat/net.h
@@ -0,0 +1,53 @@
+#pragma once
+
+#include <stdbool.h>
+#include "global.h"
+
+
+enum net_response_type{
+ NET_OK,
+ NET_ERROR,
+ NET_NAME,
+ NET_LIST,
+ NET_HISTORY,
+ NET_MESSAGE,
+};
+
+struct net_history_item{
+ char *username;
+ i64 timestamp;
+ char *message;
+};
+
+struct net_response{
+ enum net_response_type type;
+ union {
+ char *error;
+ char *name;
+ struct {
+ int nitems;
+ char **items;
+ };
+ struct {
+ int nhistory;
+ struct net_history_item *history;
+ };
+ struct {
+ char *room;
+ char *username;
+ i64 timestamp;
+ char *message;
+ };
+ };
+};
+
+typedef void net_callback_t(int fd,struct net_response res,void *payload);
+
+
+void net_set_push_callback(net_callback_t *callback);
+void net_set_history_callback(net_callback_t *callback);
+
+bool net_sendf(int fd,net_callback_t *callback,void *payload,const char *format,...)
+ __attribute__((format (printf, 4, 5)));
+
+void net_handle_recv(int fd,const char *msg);