Mercurial > pidgin.yaz
comparison plugins/icq/queue.c @ 1309:0a766047b4fd
[gaim-migrate @ 1319]
Yay, new icqlib
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 19 Dec 2000 10:08:29 +0000 |
parents | a97e334ecfa2 |
children | 4c510ca3563f |
comparison
equal
deleted
inserted
replaced
1308:4741b5a75b9f | 1309:0a766047b4fd |
---|---|
1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | 1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 /* | 2 /* |
3 $Id: queue.c 1202 2000-12-04 06:22:48Z robflynn $ | 3 $Id: queue.c 1319 2000-12-19 10:08:29Z warmenhoven $ |
4 $Log$ | 4 $Log$ |
5 Revision 1.2 2000/12/04 06:22:48 robflynn | 5 Revision 1.3 2000/12/19 10:08:29 warmenhoven |
6 Da numba one stunna! | 6 Yay, new icqlib |
7 | 7 |
8 Revision 1.1 2000/11/28 02:22:42 warmenhoven | 8 Revision 1.12 2000/12/19 06:00:07 bills |
9 icq. whoop de doo | 9 moved members from ICQLINK to ICQLINK_private struct |
10 | |
11 Revision 1.11 2000/12/06 05:15:45 denis | |
12 Handling for mass TCP messages has been added based on patch by | |
13 Konstantin Klyagin <konst@konst.org.ua> | |
14 | |
15 Revision 1.10 2000/12/03 21:56:38 bills | |
16 fixed compilation with gcc-2.96 | |
10 | 17 |
11 Revision 1.9 2000/07/10 01:31:17 bills | 18 Revision 1.9 2000/07/10 01:31:17 bills |
12 oops - removed #define LIST_TRACE and #define QUEUE_DEBUG | 19 oops - removed #define LIST_TRACE and #define QUEUE_DEBUG |
13 | 20 |
14 Revision 1.8 2000/07/10 01:26:56 bills | 21 Revision 1.8 2000/07/10 01:26:56 bills |
42 */ | 49 */ |
43 | 50 |
44 #include <stdlib.h> | 51 #include <stdlib.h> |
45 #include <time.h> | 52 #include <time.h> |
46 | 53 |
54 #include "icqlib.h" | |
47 #include "queue.h" | 55 #include "queue.h" |
48 #include "list.h" | 56 #include "list.h" |
49 | 57 |
50 void icq_UDPQueueNew(ICQLINK *link) | 58 void icq_UDPQueueNew(ICQLINK *link) |
51 { | 59 { |
52 link->icq_UDPQueue = list_new(); | 60 link->d->icq_UDPQueue = list_new(); |
53 link->icq_UDPExpireInterval = 15; /* expire interval = 15 sec */ | 61 link->icq_UDPExpireInterval = 15; /* expire interval = 15 sec */ |
54 } | 62 } |
55 | 63 |
56 void icq_UDPQueuePut(ICQLINK *link, icq_Packet *p, int attempt) | 64 void icq_UDPQueuePut(ICQLINK *link, icq_Packet *p, int attempt) |
57 { | 65 { |
64 ptr->expire = time(0L)+link->icq_UDPExpireInterval; | 72 ptr->expire = time(0L)+link->icq_UDPExpireInterval; |
65 ptr->pack = p; | 73 ptr->pack = p; |
66 #ifdef QUEUE_DEBUG | 74 #ifdef QUEUE_DEBUG |
67 printf("enqueuing queueitem %p\n", ptr); | 75 printf("enqueuing queueitem %p\n", ptr); |
68 #endif | 76 #endif |
69 list_enqueue(link->icq_UDPQueue, ptr); | 77 list_enqueue(link->d->icq_UDPQueue, ptr); |
70 } | 78 } |
71 | 79 |
72 icq_Packet *icq_UDPQueueGet(ICQLINK *link) | 80 icq_Packet *icq_UDPQueueGet(ICQLINK *link) |
73 { | 81 { |
74 icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->icq_UDPQueue); | 82 icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->d->icq_UDPQueue); |
75 icq_Packet *pack = 0L; | 83 icq_Packet *pack = 0L; |
76 if(ptr) | 84 if(ptr) |
77 { | 85 { |
78 pack = ptr->pack; | 86 pack = ptr->pack; |
79 list_remove(link->icq_UDPQueue, (list_node*)ptr); | 87 list_remove(link->d->icq_UDPQueue, (list_node*)ptr); |
80 } | 88 } |
81 #ifdef QUEUE_DEBUG | 89 #ifdef QUEUE_DEBUG |
82 if(pack) | 90 if(pack) |
83 printf("icq_UDPQueueGet(cmd=0x%04X)\n", icq_PacketReadUDPOutCmd(pack)); | 91 printf("icq_UDPQueueGet(cmd=0x%04X)\n", icq_PacketReadUDPOutCmd(pack)); |
84 #endif | 92 #endif |
85 return pack; | 93 return pack; |
86 } | 94 } |
87 | 95 |
88 icq_Packet *icq_UDPQueuePeek(ICQLINK *link) | 96 icq_Packet *icq_UDPQueuePeek(ICQLINK *link) |
89 { | 97 { |
90 icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->icq_UDPQueue); | 98 icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->d->icq_UDPQueue); |
91 if(ptr) | 99 if(ptr) |
92 return ptr->pack; | 100 return ptr->pack; |
93 else | 101 else |
94 return 0L; | 102 return 0L; |
95 } | 103 } |
112 void icq_UDPQueueDelete(ICQLINK *link) | 120 void icq_UDPQueueDelete(ICQLINK *link) |
113 { | 121 { |
114 #ifdef QUEUE_DEBUG | 122 #ifdef QUEUE_DEBUG |
115 printf("icq_UDPQueueDelete\n"); | 123 printf("icq_UDPQueueDelete\n"); |
116 #endif | 124 #endif |
117 if(link->icq_UDPQueue) | 125 if(link->d->icq_UDPQueue) |
118 { | 126 { |
119 list_delete(link->icq_UDPQueue, _icq_UDPQueueItemFree); | 127 list_delete(link->d->icq_UDPQueue, _icq_UDPQueueItemFree); |
120 link->icq_UDPQueue = 0; | 128 link->d->icq_UDPQueue = 0; |
121 } | 129 } |
122 } | 130 } |
123 | 131 |
124 /* Only frees the queue */ | 132 /* Only frees the queue */ |
125 void icq_UDPQueueFree(ICQLINK *link) | 133 void icq_UDPQueueFree(ICQLINK *link) |
126 { | 134 { |
127 #ifdef QUEUE_DEBUG | 135 #ifdef QUEUE_DEBUG |
128 printf("icq_UDPQueueFree\n"); | 136 printf("icq_UDPQueueFree\n"); |
129 #endif | 137 #endif |
130 if(link->icq_UDPQueue) | 138 if(link->d->icq_UDPQueue) |
131 list_free(link->icq_UDPQueue, _icq_UDPQueueItemFree); | 139 list_free(link->d->icq_UDPQueue, _icq_UDPQueueItemFree); |
132 } | 140 } |
133 | 141 |
134 int icq_UDPQueueFindSeq(void *p, va_list data) | 142 int icq_UDPQueueFindSeq(void *p, va_list data) |
135 { | 143 { |
136 WORD seq=va_arg(data, int); | 144 WORD seq=va_arg(data, int); |
141 { | 149 { |
142 icq_UDPQueueItem *ptr; | 150 icq_UDPQueueItem *ptr; |
143 #ifdef QUEUE_DEBUG | 151 #ifdef QUEUE_DEBUG |
144 printf("icq_UDPQueueDelSeq(seq=0x%04X", seq); | 152 printf("icq_UDPQueueDelSeq(seq=0x%04X", seq); |
145 #endif | 153 #endif |
146 ptr = list_traverse(link->icq_UDPQueue, icq_UDPQueueFindSeq, seq); | 154 ptr = list_traverse(link->d->icq_UDPQueue, icq_UDPQueueFindSeq, seq); |
147 if(ptr) | 155 if(ptr) |
148 { | 156 { |
149 #ifdef QUEUE_DEBUG | 157 #ifdef QUEUE_DEBUG |
150 printf(", cmd=0x%04X",icq_PacketReadUDPOutCmd(ptr->pack)); | 158 printf(", cmd=0x%04X",icq_PacketReadUDPOutCmd(ptr->pack)); |
151 #endif | 159 #endif |
152 list_remove(link->icq_UDPQueue, ptr); | 160 list_remove(link->d->icq_UDPQueue, ptr); |
153 _icq_UDPQueueItemFree(ptr); | 161 _icq_UDPQueueItemFree(ptr); |
154 } | 162 } |
155 #ifdef QUEUE_DEBUG | 163 #ifdef QUEUE_DEBUG |
156 printf(")\n"); | 164 printf(")\n"); |
157 #endif | 165 #endif |
158 } | 166 } |
159 | 167 |
160 long icq_UDPQueueInterval(ICQLINK *link) | 168 long icq_UDPQueueInterval(ICQLINK *link) |
161 { | 169 { |
162 long interval; | 170 long interval; |
163 icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->icq_UDPQueue); | 171 icq_UDPQueueItem *ptr = (icq_UDPQueueItem*)list_first(link->d->icq_UDPQueue); |
164 if(ptr) | 172 if(ptr) |
165 { | 173 { |
166 interval = ptr->expire - time(0L); | 174 interval = ptr->expire - time(0L); |
167 return interval>=0?interval:0; | 175 return interval>=0?interval:0; |
168 } | 176 } |