diff -r 97604efda1ce -r 12d806823775 src/irc_client.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/irc_client.h Fri Mar 13 16:10:48 2009 +0200 @@ -0,0 +1,53 @@ +#ifndef IRC_CLIENT_H +#define IRC_CLIENT_H + +/** + * @file + * + * Defines the high-level, full-featured IRC 'client' state, which essentially manipulates a set of irc_net's + */ +#include "irc_net.h" +#include + +/** + * The IRC client + */ +struct irc_client { + /** Our set of configured IRC networks */ + TAILQ_HEAD(irc_client_networks, irc_net) networks; + + /** Are we in the process of quitting all networks? */ + bool quitting; + + /** Have we quit all networks? */ + bool quit; +}; + +/** + * Construct a new irc_client + */ +err_t irc_client_create (struct irc_client **client_ptr, struct error_info *err); + +/** + * Destroy the irc_client, also destroying all networks + */ +void irc_client_destroy (struct irc_client *client); + +/** + * Add a new IRC network + */ +err_t irc_client_add_net (struct irc_client *client, struct irc_net **net_ptr, struct irc_net_info *net_info); + +/** + * Get a pre-existing IRC network by name + */ +struct irc_net* irc_client_get_net (struct irc_client *client, const char *network); + +/** + * Quit cleanly from all our IRC networks. + * + * XXX: currently no way to indicate once we've quit all of them + */ +err_t irc_client_quit (struct irc_client *client, const char *message); + +#endif