Mercurial > pidgin
comparison src/protocols/oscar/txqueue.c @ 13239:f260d319bbbc
[gaim-migrate @ 15605]
Renaming a bunch of structs and typedefs to use the same naming
scheme as the rest of Gaim
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 12 Feb 2006 16:02:05 +0000 |
parents | f2431a7e33aa |
children | 87a7c3077c19 |
comparison
equal
deleted
inserted
replaced
13238:1e855032d7bc | 13239:f260d319bbbc |
---|---|
44 * | 44 * |
45 * framing = AIM_FRAMETYPE_OFT/FLAP | 45 * framing = AIM_FRAMETYPE_OFT/FLAP |
46 * chan = channel for FLAP, hdrtype for OFT | 46 * chan = channel for FLAP, hdrtype for OFT |
47 * | 47 * |
48 */ | 48 */ |
49 faim_internal aim_frame_t *aim_tx_new(aim_session_t *sess, aim_conn_t *conn, guint8 framing, guint16 chan, int datalen) | 49 faim_internal FlapFrame *aim_tx_new(OscarSession *sess, OscarConnection *conn, guint8 framing, guint16 chan, int datalen) |
50 { | 50 { |
51 aim_frame_t *fr; | 51 FlapFrame *fr; |
52 | 52 |
53 if (!sess || !conn) { | 53 if (!sess || !conn) { |
54 gaim_debug_misc("oscar", "aim_tx_new: No session or no connection specified!\n"); | 54 gaim_debug_misc("oscar", "aim_tx_new: No session or no connection specified!\n"); |
55 return NULL; | 55 return NULL; |
56 } | 56 } |
66 gaim_debug_misc("oscar", "aim_tx_new: attempted to allocate inappropriate frame type for FLAP connection\n"); | 66 gaim_debug_misc("oscar", "aim_tx_new: attempted to allocate inappropriate frame type for FLAP connection\n"); |
67 return NULL; | 67 return NULL; |
68 } | 68 } |
69 } | 69 } |
70 | 70 |
71 if (!(fr = (aim_frame_t *)calloc(1, sizeof(aim_frame_t)))) | 71 if (!(fr = (FlapFrame *)calloc(1, sizeof(FlapFrame)))) |
72 return NULL; | 72 return NULL; |
73 | 73 |
74 fr->conn = conn; | 74 fr->conn = conn; |
75 fr->hdrtype = framing; | 75 fr->hdrtype = framing; |
76 if (fr->hdrtype == AIM_FRAMETYPE_FLAP) | 76 if (fr->hdrtype == AIM_FRAMETYPE_FLAP) |
98 * This increments the tx command count, and returns the seqnum | 98 * This increments the tx command count, and returns the seqnum |
99 * that should be stamped on the next FLAP packet sent. This is | 99 * that should be stamped on the next FLAP packet sent. This is |
100 * normally called during the final step of packet preparation | 100 * normally called during the final step of packet preparation |
101 * before enqueuement (in aim_tx_enqueue()). | 101 * before enqueuement (in aim_tx_enqueue()). |
102 */ | 102 */ |
103 static flap_seqnum_t aim_get_next_txseqnum(aim_conn_t *conn) | 103 static flap_seqnum_t aim_get_next_txseqnum(OscarConnection *conn) |
104 { | 104 { |
105 flap_seqnum_t ret; | 105 flap_seqnum_t ret; |
106 | 106 |
107 ret = ++conn->seqnum; | 107 ret = ++conn->seqnum; |
108 | 108 |
119 * | 119 * |
120 * Note that this is only used when doing queue-based transmitting; | 120 * Note that this is only used when doing queue-based transmitting; |
121 * that is, when sess->tx_enqueue is set to &aim_tx_enqueue__queuebased. | 121 * that is, when sess->tx_enqueue is set to &aim_tx_enqueue__queuebased. |
122 * | 122 * |
123 */ | 123 */ |
124 static int aim_tx_enqueue__queuebased(aim_session_t *sess, aim_frame_t *fr) | 124 static int aim_tx_enqueue__queuebased(OscarSession *sess, FlapFrame *fr) |
125 { | 125 { |
126 | 126 |
127 if (!fr->conn) { | 127 if (!fr->conn) { |
128 gaim_debug_warning("oscar", "aim_tx_enqueue: enqueueing packet with no connecetion\n"); | 128 gaim_debug_warning("oscar", "aim_tx_enqueue: enqueueing packet with no connecetion\n"); |
129 fr->conn = aim_getconn_type(sess, AIM_CONN_TYPE_BOS); | 129 fr->conn = aim_getconn_type(sess, AIM_CONN_TYPE_BOS); |
138 | 138 |
139 /* see overhead note in aim_rxqueue counterpart */ | 139 /* see overhead note in aim_rxqueue counterpart */ |
140 if (!sess->queue_outgoing) | 140 if (!sess->queue_outgoing) |
141 sess->queue_outgoing = fr; | 141 sess->queue_outgoing = fr; |
142 else { | 142 else { |
143 aim_frame_t *cur; | 143 FlapFrame *cur; |
144 for (cur = sess->queue_outgoing; cur->next; cur = cur->next); | 144 for (cur = sess->queue_outgoing; cur->next; cur = cur->next); |
145 cur->next = fr; | 145 cur->next = fr; |
146 } | 146 } |
147 | 147 |
148 return 0; | 148 return 0; |
155 * Basically the same as its __queuebased couterpart, however | 155 * Basically the same as its __queuebased couterpart, however |
156 * instead of doing a list append, it just calls aim_tx_sendframe() | 156 * instead of doing a list append, it just calls aim_tx_sendframe() |
157 * right here. | 157 * right here. |
158 * | 158 * |
159 */ | 159 */ |
160 static int aim_tx_enqueue__immediate(aim_session_t *sess, aim_frame_t *fr) | 160 static int aim_tx_enqueue__immediate(OscarSession *sess, FlapFrame *fr) |
161 { | 161 { |
162 int ret; | 162 int ret; |
163 | 163 |
164 if (!fr->conn) { | 164 if (!fr->conn) { |
165 gaim_debug_error("oscar", "aim_tx_enqueue: packet has no connection\n"); | 165 gaim_debug_error("oscar", "aim_tx_enqueue: packet has no connection\n"); |
177 aim_frame_destroy(fr); | 177 aim_frame_destroy(fr); |
178 | 178 |
179 return ret; | 179 return ret; |
180 } | 180 } |
181 | 181 |
182 faim_export int aim_tx_setenqueue(aim_session_t *sess, int what, int (*func)(aim_session_t *, aim_frame_t *)) | 182 faim_export int aim_tx_setenqueue(OscarSession *sess, int what, int (*func)(OscarSession *, FlapFrame *)) |
183 { | 183 { |
184 | 184 |
185 if (what == AIM_TX_QUEUED) | 185 if (what == AIM_TX_QUEUED) |
186 sess->tx_enqueue = &aim_tx_enqueue__queuebased; | 186 sess->tx_enqueue = &aim_tx_enqueue__queuebased; |
187 else if (what == AIM_TX_IMMEDIATE) | 187 else if (what == AIM_TX_IMMEDIATE) |
194 return -EINVAL; /* unknown action */ | 194 return -EINVAL; /* unknown action */ |
195 | 195 |
196 return 0; | 196 return 0; |
197 } | 197 } |
198 | 198 |
199 faim_internal int aim_tx_enqueue(aim_session_t *sess, aim_frame_t *fr) | 199 faim_internal int aim_tx_enqueue(OscarSession *sess, FlapFrame *fr) |
200 { | 200 { |
201 | 201 |
202 /* | 202 /* |
203 * If we want to send on a connection that is in progress, we have to force | 203 * If we want to send on a connection that is in progress, we have to force |
204 * them to use the queue based version. Otherwise, use whatever they | 204 * them to use the queue based version. Otherwise, use whatever they |
231 } | 231 } |
232 | 232 |
233 return cur; | 233 return cur; |
234 } | 234 } |
235 | 235 |
236 faim_internal int aim_bstream_send(aim_bstream_t *bs, aim_conn_t *conn, size_t count) | 236 faim_internal int aim_bstream_send(ByteStream *bs, OscarConnection *conn, size_t count) |
237 { | 237 { |
238 int wrote = 0; | 238 int wrote = 0; |
239 | 239 |
240 if (!bs || !conn) | 240 if (!bs || !conn) |
241 return -EINVAL; | 241 return -EINVAL; |
277 bs->offset += wrote; | 277 bs->offset += wrote; |
278 | 278 |
279 return wrote; | 279 return wrote; |
280 } | 280 } |
281 | 281 |
282 static int sendframe_flap(aim_session_t *sess, aim_frame_t *fr) | 282 static int sendframe_flap(OscarSession *sess, FlapFrame *fr) |
283 { | 283 { |
284 aim_bstream_t bs; | 284 ByteStream bs; |
285 guint8 *bs_raw; | 285 guint8 *bs_raw; |
286 int payloadlen, err = 0, bslen; | 286 int payloadlen, err = 0, bslen; |
287 | 287 |
288 payloadlen = aim_bstream_curpos(&fr->data); | 288 payloadlen = aim_bstream_curpos(&fr->data); |
289 | 289 |
313 fr->conn->lastactivity = time(NULL); | 313 fr->conn->lastactivity = time(NULL); |
314 | 314 |
315 return err; | 315 return err; |
316 } | 316 } |
317 | 317 |
318 static int sendframe_rendezvous(aim_session_t *sess, aim_frame_t *fr) | 318 static int sendframe_rendezvous(OscarSession *sess, FlapFrame *fr) |
319 { | 319 { |
320 aim_bstream_t bs; | 320 ByteStream bs; |
321 guint8 *bs_raw; | 321 guint8 *bs_raw; |
322 int payloadlen, err = 0, bslen; | 322 int payloadlen, err = 0, bslen; |
323 | 323 |
324 payloadlen = aim_bstream_curpos(&fr->data); | 324 payloadlen = aim_bstream_curpos(&fr->data); |
325 | 325 |
348 fr->conn->lastactivity = time(NULL); | 348 fr->conn->lastactivity = time(NULL); |
349 | 349 |
350 return err; | 350 return err; |
351 } | 351 } |
352 | 352 |
353 faim_internal int aim_tx_sendframe(aim_session_t *sess, aim_frame_t *fr) | 353 faim_internal int aim_tx_sendframe(OscarSession *sess, FlapFrame *fr) |
354 { | 354 { |
355 if (fr->hdrtype == AIM_FRAMETYPE_FLAP) | 355 if (fr->hdrtype == AIM_FRAMETYPE_FLAP) |
356 return sendframe_flap(sess, fr); | 356 return sendframe_flap(sess, fr); |
357 else if (fr->hdrtype == AIM_FRAMETYPE_OFT) | 357 else if (fr->hdrtype == AIM_FRAMETYPE_OFT) |
358 return sendframe_rendezvous(sess, fr); | 358 return sendframe_rendezvous(sess, fr); |
359 | 359 |
360 return -1; | 360 return -1; |
361 } | 361 } |
362 | 362 |
363 faim_export int aim_tx_flushqueue(aim_session_t *sess) | 363 faim_export int aim_tx_flushqueue(OscarSession *sess) |
364 { | 364 { |
365 aim_frame_t *cur; | 365 FlapFrame *cur; |
366 | 366 |
367 for (cur = sess->queue_outgoing; cur; cur = cur->next) { | 367 for (cur = sess->queue_outgoing; cur; cur = cur->next) { |
368 | 368 |
369 if (cur->handled) | 369 if (cur->handled) |
370 continue; /* already been sent */ | 370 continue; /* already been sent */ |
400 /* | 400 /* |
401 * This is responsible for removing sent commands from the transmit | 401 * This is responsible for removing sent commands from the transmit |
402 * queue. This is not a required operation, but it of course helps | 402 * queue. This is not a required operation, but it of course helps |
403 * reduce memory footprint at run time! | 403 * reduce memory footprint at run time! |
404 */ | 404 */ |
405 faim_export void aim_tx_purgequeue(aim_session_t *sess) | 405 faim_export void aim_tx_purgequeue(OscarSession *sess) |
406 { | 406 { |
407 aim_frame_t *cur, **prev; | 407 FlapFrame *cur, **prev; |
408 | 408 |
409 for (prev = &sess->queue_outgoing; (cur = *prev); ) { | 409 for (prev = &sess->queue_outgoing; (cur = *prev); ) { |
410 if (cur->handled) { | 410 if (cur->handled) { |
411 *prev = cur->next; | 411 *prev = cur->next; |
412 aim_frame_destroy(cur); | 412 aim_frame_destroy(cur); |
423 * warning. | 423 * warning. |
424 * | 424 * |
425 * @param sess A session. | 425 * @param sess A session. |
426 * @param conn Connection that's dying. | 426 * @param conn Connection that's dying. |
427 */ | 427 */ |
428 faim_internal void aim_tx_cleanqueue(aim_session_t *sess, aim_conn_t *conn) | 428 faim_internal void aim_tx_cleanqueue(OscarSession *sess, OscarConnection *conn) |
429 { | 429 { |
430 aim_frame_t *cur; | 430 FlapFrame *cur; |
431 | 431 |
432 for (cur = sess->queue_outgoing; cur; cur = cur->next) { | 432 for (cur = sess->queue_outgoing; cur; cur = cur->next) { |
433 if (cur->conn == conn) | 433 if (cur->conn == conn) |
434 cur->handled = 1; | 434 cur->handled = 1; |
435 } | 435 } |