X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcommands.cpp;h=2b96b0a8ffb9f3323899fbcd8ed781c7afb85f31;hb=9e81044ffde2b1fc62456aca512d0cd7f1e52ad8;hp=e327aa712b476052aed2bee7a1d61aca7db1c0a0;hpb=eb4229deed0281ae566ef7e55a144e5d3183a4b2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/commands.cpp b/src/commands.cpp index e327aa712..2b96b0a8f 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -14,20 +14,27 @@ * --------------------------------------------------- */ +using namespace std; + #include "inspircd.h" #include "inspircd_io.h" #include "inspircd_util.h" #include "inspircd_config.h" #include -#include #include #include #include + #ifdef USE_KQUEUE #include #include #include #endif + +#ifdef USE_EPOLL +#include +#endif + #include #include #include @@ -39,11 +46,7 @@ #include #include #include -#include #include -#include -#include -#include #include #include #include @@ -67,12 +70,14 @@ #include "helperfuncs.h" #include "hashcomp.h" -using namespace std; - #ifdef USE_KQUEUE extern int kq; #endif +#ifdef USE_EPOLL +int ep; +#endif + extern int MODCOUNT; extern std::vector modules; extern std::vector factory; @@ -129,10 +134,10 @@ const long duration_d = duration_h * 24; const long duration_w = duration_d * 7; const long duration_y = duration_w * 52; -typedef nspace::hash_map, StrHashComp> user_hash; -typedef nspace::hash_map, StrHashComp> chan_hash; -typedef nspace::hash_map, InAddr_HashComp> address_cache; -typedef nspace::hash_map, StrHashComp> whowas_hash; +typedef nspace::hash_map, irc::StrHashComp> user_hash; +typedef nspace::hash_map, irc::StrHashComp> chan_hash; +typedef nspace::hash_map, irc::InAddr_HashComp> address_cache; +typedef nspace::hash_map, irc::StrHashComp> whowas_hash; typedef std::deque command_table; @@ -182,6 +187,15 @@ void handle_part(char **parameters, int pcnt, userrec *user) } } +void handle_commands(char **parameters, int pcnt, userrec *user) +{ + for (int i = 0; i < command_table.size(); i++) + { + WriteServ(user->fd,"902 %s :%s %s",user->nick,command_table[i].command,command_table[i].source); + } + WriteServ(user->fd,"903 %s :End of COMMANDS list"); +} + void handle_kick(char **parameters, int pcnt, userrec *user) { chanrec* Ptr = FindChan(parameters[0]); @@ -925,6 +939,16 @@ void handle_quit(char **parameters, int pcnt, userrec *user) { log(DEBUG,"kqueue: Failed to remove user from queue!"); } +#endif +#ifdef USE_EPOLL + struct epoll_event ev; + ev.events = EPOLLIN | EPOLLET; + ev.data.fd = user->fd; + int i = epoll_ctl(ep, EPOLL_CTL_DEL, user->fd, &ev); + if (i < 0) + { + log(DEBUG,"epoll: List deletion failure!"); + } #endif shutdown(user->fd,2); close(user->fd);