1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include <glib.h>
/*
* Irc utilities
*/
/*
* IrcServer
*/
typedef struct IrcServer IrcServer;
typedef struct IrcChannel IrcChannel;
#define IRC_ERROR irc_error_quark ()
typedef enum
{
IRC_ERROR_MALFORMED_MESSAGE
} IrcError;
GQuark irc_error_quark (void);
typedef enum
{
IRC_SERVER_LOOKING_UP_HOSTNAME,
IRC_SERVER_FOUND_HOST_NAME,
IRC_SERVER_CONNECTING,
IRC_SERVER_CONNECTED,
IRC_SERVER_DISCONNECT,
IRC_SERVER_ERROR
} IrcServerEvent;
typedef enum
{
IRC_CHANNEL_MESSAGE,
IRC_TOPIC_CHANGED,
IRC_USER_JOINED,
} IrcChannelEvent;
typedef void (* IrcServerFunc) (IrcServer *server,
const IrcServerEvent *event);
typedef void (* IrcChannelListFunc) (GList *channels, gpointer data);
IrcServer *irc_server_new (const char *name,
gint port,
IrcServerFunc func,
gpointer data);
gpointer irc_server_get_data (IrcServer *server);
void irc_server_list_channels (IrcServer *server,
IrcChannelListFunc func,
gpointer data);
void irc_server_connect (IrcServer *server,
const char *nickname,
const char *password);
void irc_server_disconnect (IrcServer *server);
typedef void (* IrcChannelFunc) (IrcChannel *channel,
const IrcChannelEvent *event,
gpointer data);
IrcChannel *irc_server_join_channel (IrcServer *server,
const char *name,
IrcChannelFunc func,
gpointer data);
/* Channel operations */
|