[gaim-migrate @ 3063]
[pidgin-git.git] / src / protocols / icq / icqevent.h
blobb49e232096ea9be3bdaf617d2ef645b13464e477
1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
3 /*
4 * $Id: icqevent.h 2096 2001-07-31 01:00:39Z warmenhoven $
6 * Copyright (C) 1998-2001, Denis V. Dmitrienko <denis@null.net> and
7 * Bill Soudan <soudan@kde.org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 #ifndef _ICQEVENT_H
26 #define _ICQEVENT_H
28 #ifdef HAVE_CONFIG_H
29 #include <config.h>
30 #endif
32 #include <time.h>
34 #include "icqpacket.h"
35 #include "tcplink.h"
36 #include "stdpackets.h"
38 #define EVENT_DEBUG
40 #define ICQ_EVENT_MESSAGE ICQ_TCP_MESSAGE
41 #define ICQ_EVENT_ACK ICQ_TCP_ACK
42 #define ICQ_EVENT_CANCEL ICQ_TCP_CANCEL
44 #define ICQ_EVENT_INCOMING 1
45 #define ICQ_EVENT_OUTGOING 2
47 typedef struct icq_Event_s {
49 unsigned long version;
50 unsigned long id;
51 unsigned long uin;
53 int type; /* chat, file, message, url */
54 int subtype; /* message, ack, or cancel */
56 int direction;
57 time_t time;
59 icq_Packet *(*createPacket)(struct icq_Event_s *, icq_TCPLink *);
60 void *(*parsePacket)(struct icq_Event_s *, icq_Packet *);
61 void (*handleEvent)(struct icq_Event_s *, icq_Link *);
63 #ifdef EVENT_DEBUG
64 const char *(*eventName)(struct icq_Event_s *);
65 const char *(*eventDump)(struct icq_Event_s *);
66 #endif
68 } icq_Event;
70 typedef struct icq_MessageEvent_s {
72 icq_Event event;
74 char *message; /* must be non-const for url hack */
75 char *url; /* hack so we can use same structure for url */
76 int status;
77 int type;
79 } icq_MessageEvent;
81 typedef struct icq_MessageEvent_s icq_URLEvent;
83 typedef struct icq_ChatRequestEvent_s {
85 icq_MessageEvent message_event;
87 int port;
89 } icq_ChatRequestEvent;
91 typedef struct icq_FileRequestEvent_s {
93 icq_MessageEvent message_event;
95 const char *filename;
96 unsigned long filesize;
97 int port;
99 } icq_FileRequestEvent;
101 /* generic event functions */
102 void icq_EventInit(icq_Event *p, int type, int subtype, unsigned long uin,
103 int version);
104 icq_Packet *icq_EventCreatePacket(icq_Event *pbase);
105 void icq_EventParsePacket(icq_Event *pevent, icq_Packet *p);
107 /* message event functions */
108 icq_MessageEvent *icq_CreateMessageEvent(int subtype, unsigned long uin,
109 const char *message);
110 void icq_MessageEventInit(icq_MessageEvent *p, int type, int subtype,
111 unsigned long uin, int msgtype, const char *message);
112 icq_Packet *icq_MessageCreatePacket(icq_Event *pbase, icq_TCPLink *plink);
113 void icq_MessageParsePacket(icq_Event *pbase, icq_Packet *p);
115 /* url event functions */
116 icq_URLEvent *icq_CreateURLEvent(int subtype, unsigned long uin,
117 const char *message, const char *url);
118 icq_Packet *icq_URLCreatePacket(icq_Event *pbase, icq_TCPLink *plink);
119 void icq_URLParsePacket(icq_Event *pbase, icq_Packet *p);
121 /* chat request event functions */
122 icq_ChatRequestEvent *icq_ChatRequestEventNew(int subtype,
123 unsigned long uin, const char *message, int port);
124 icq_Packet *icq_ChatRequestCreatePacket(icq_Event *pbase,
125 icq_TCPLink *plink);
126 void icq_ChatParsePacket(icq_Event *pbase, icq_Packet *p);
128 /* file request event functions */
129 icq_FileRequestEvent *icq_FileRequestEventNew(int subtype,
130 unsigned long uin, const char *message, const char *filename,
131 unsigned long filesize);
132 icq_Packet *icq_FileRequestCreatePacket(icq_Event *pbase,
133 icq_TCPLink *plink);
134 void icq_FileParsePacket(icq_Event *pbase, icq_Packet *p);
136 /* main packet parser */
137 icq_Event *icq_ParsePacket(icq_Packet *p);
139 #ifdef EVENT_DEBUG
140 const char *icq_MessageEventName(icq_Event *p);
141 const char *icq_MessageEventDump(icq_Event *p);
142 const char *icq_URLEventName(icq_Event *p);
143 const char *icq_URLEventDump(icq_Event *p);
144 const char *icq_ChatRequestEventName(icq_Event *p);
145 const char *icq_ChatRequestEventDump(icq_Event *p);
146 const char *icq_FileRequestEventName(icq_Event *p);
147 const char *icq_FileRequestEventDump(icq_Event *p);
148 const char *icq_EventDump(icq_Event *p);
149 #endif
151 #endif /* _ICQEVENT_H */