/* IRCfs - IRC FileServ for *nix. * Copyright (C) 2002 Nick 'Zaf' Clifford * For licensing details, refer to the LICENSE file in the source * code directory. */ #ifndef __include_server_h__ #define __include_server_h__ #include "runtime.h" #include "event.h" struct server; enum server_events { server_event_new, server_event_connected, server_event_disconnected, server_event_error }; /* Server events: * msg = struct server * search = NULL */ struct eventobj *server_get_event_obj(); typedef int (*server_code_handler_func)(struct server *s, int code, int argc, char *argv[], void *appdata); typedef int (*server_command_handler_func)(struct server *s, const char *command, int argc, char *argv[], void *appdata); struct server *server_create(); /* server_open(network,server) * The prefered way of creating a server object, specify the name of the * desired network, and the name of the server (or '*' or NULL if * doesn't matter), and the server object will read the configuration * specified for that network & server from the config file. * * Returns a server object, or NULL on error. */ struct server *server_open(const char *network, const char *server); typedef int (*server_foreach_func)(struct server *s); int server_foreach(server_foreach_func func); POOL server_get_pool(struct server *s); int server_setnick(struct server *s,const char *nick); const char *server_getnick(struct server *s); int server_setinfo(struct server *s,const char *info); int server_connect(struct server *s,const char *host, unsigned short port); const char *server_get_host(struct server *s); unsigned short server_get_port(struct server *s); int server_connected(struct server *s); void *server_set_module_data(struct server *s, const char *module_name, void *data); void *server_get_module_data(struct server *s, const char *module_name); int server_set_code_handler(struct server *s, int code, int parm_filter_num, const char *parm_filter, server_code_handler_func func, void *appdata); int server_del_code_handler(struct server *s, int code, const char *first_parm_filter, server_code_handler_func func); int server_set_default_code_handler(struct server *s, int code, server_code_handler_func func, void *appdata); int server_set_command_handler(struct server *s, const char *command, int parm_filter_num, const char *parm_filter, server_command_handler_func func, void *appdata); int server_del_command_handler(struct server *s, const char *command, int parm_filter_num, const char *first_parm_filter, server_command_handler_func func); int server_set_default_command_handler(struct server *s, const char *command, server_command_handler_func func, void *appdata); struct server *server_find_network_server(const char *network, const char *server); const char *server_get_name(struct server *s); int is_nickchar(char ch); unsigned long server_get_my_addr_long(struct server *s); int server_send(struct server *s, const char *format, ...); extern const char *SERVER_TRIGGER_MYNICK; int server_is_connected(struct server *s); struct user *server_get_me(struct server *s); #endif