#include "ChanUser.h"
#include "IRCEvents.h"
#include "ClientSocket.h"
+#include "WHOHandler.h"
struct irc_cmd *irc_commands = NULL;
}
}
+static USERLIST_CALLBACK(got_channel_userlist) {
+ chan->flags |= CHANFLAG_RECEIVED_USERLIST;
+}
+
static IRC_CMD(raw_001) {
client->flags |= SOCKET_FLAG_READY;
putsock(client, "JOIN #pktest");
if(chan == NULL) {
chan = addChannel(argv[0]);
//request member list
- //TODO!
+ get_userlist(chan, got_channel_userlist);
} else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) {
struct ChanUser *chanuser = addChanUser(chan, user);
event_join(chanuser);
return 1;
}
+static IRC_CMD(raw_354) {
+ recv_whohandler_354(client, argv, argc);
+ return 1;
+}
+
+static IRC_CMD(raw_315) {
+ recv_whohandler_315(client, argv, argc);
+ return 1;
+}
+
void parser_init() {
//all the raws we receive...
register_irc_function("001", raw_001);
+ register_irc_function("354", raw_354);
+ register_irc_function("315", raw_315);
register_irc_function("KICK", raw_kick);
register_irc_function("JOIN", raw_join);
register_irc_function("PART", raw_part);
--- /dev/null
+
+#include "WHOHandler.h"
+
+void get_userlist(struct ChanNode *chan, userlist_callback_t callback) {
+
+}
+
+void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int argc) {
+
+}
+
+void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int argc) {
+
+}
--- /dev/null
+#ifndef _WHOHandler_h
+#define _WHOHandler_h
+
+#include "main.h"
+
+struct ClientSocket;
+struct ChanNode;
+
+#define USERLIST_CALLBACK(NAME) int NAME(UNUSED_ARG(struct ClientSocket *client), UNUSED_ARG(struct ChanNode *chan))
+typedef USERLIST_CALLBACK(userlist_callback_t);
+
+void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int argc);
+void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int argc);
+void get_userlist(struct ChanNode *chan, userlist_callback_t callback);
+
+#endif
\ No newline at end of file