1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
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.
34 #include "icqpacket.h"
36 #include "stdpackets.h"
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
;
53 int type
; /* chat, file, message, url */
54 int subtype
; /* message, ack, or cancel */
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
*);
64 const char *(*eventName
)(struct icq_Event_s
*);
65 const char *(*eventDump
)(struct icq_Event_s
*);
70 typedef struct icq_MessageEvent_s
{
74 char *message
; /* must be non-const for url hack */
75 char *url
; /* hack so we can use same structure for url */
81 typedef struct icq_MessageEvent_s icq_URLEvent
;
83 typedef struct icq_ChatRequestEvent_s
{
85 icq_MessageEvent message_event
;
89 } icq_ChatRequestEvent
;
91 typedef struct icq_FileRequestEvent_s
{
93 icq_MessageEvent message_event
;
96 unsigned long filesize
;
99 } icq_FileRequestEvent
;
101 /* generic event functions */
102 void icq_EventInit(icq_Event
*p
, int type
, int subtype
, unsigned long uin
,
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
,
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
,
134 void icq_FileParsePacket(icq_Event
*pbase
, icq_Packet
*p
);
136 /* main packet parser */
137 icq_Event
*icq_ParsePacket(icq_Packet
*p
);
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
);
151 #endif /* _ICQEVENT_H */