- Add aim_tx_setenqueue().
No release numbers
------------------
+ - Fri Feb 9 22:31:22 UTC 2001
+ - Add aim_tx_setenqueue().
+
- Thu Feb 8 20:12:39 UTC 2001
- Let TLV functions out of aim.h if FAIM_NEED_TLV is defined.
* This must always be set. Default to the queue-based
* version for back-compatibility.
*/
- sess->tx_enqueue = &aim_tx_enqueue__queuebased;
+ aim_tx_setenqueue(sess, AIM_TX_QUEUED, NULL);
return;
}
* that is, when sess->tx_enqueue is set to &aim_tx_enqueue__queuebased.
*
*/
-faim_internal int aim_tx_enqueue__queuebased(struct aim_session_t *sess,
- struct command_tx_struct *newpacket)
+static int aim_tx_enqueue__queuebased(struct aim_session_t *sess, struct command_tx_struct *newpacket)
{
struct command_tx_struct *cur;
* right here.
*
*/
-faim_internal int aim_tx_enqueue__immediate(struct aim_session_t *sess, struct command_tx_struct *newpacket)
+static int aim_tx_enqueue__immediate(struct aim_session_t *sess, struct command_tx_struct *newpacket)
{
if (newpacket->conn == NULL) {
faimdprintf(1, "aim_tx_enqueue: ERROR: packet has no connection\n");
return 0;
}
+faim_export int aim_tx_setenqueue(struct aim_session_t *sess, int what, int (*func)(struct aim_session_t *, struct command_tx_struct *))
+{
+ if (!sess)
+ return -1;
+
+ if (what == AIM_TX_QUEUED)
+ sess->tx_enqueue = &aim_tx_enqueue__queuebased;
+ else if (what == AIM_TX_IMMEDIATE)
+ sess->tx_enqueue = &aim_tx_enqueue__immediate;
+ else if (what == AIM_TX_USER) {
+ if (!func)
+ return -1;
+ sess->tx_enqueue = func;
+ } else
+ return -1; /* unknown action */
+
+ return 0;
+}
+
faim_internal int aim_tx_enqueue(struct aim_session_t *sess, struct command_tx_struct *command)
{
/*
faim_internal int aim_tx_sendframe(struct aim_session_t *sess, struct command_tx_struct *cur);
faim_internal unsigned int aim_get_next_txseqnum(struct aim_conn_t *);
faim_internal struct command_tx_struct *aim_tx_new(unsigned char framing, int chan, struct aim_conn_t *conn, int datalen);
-faim_internal int aim_tx_enqueue__queuebased(struct aim_session_t *, struct command_tx_struct *);
-faim_internal int aim_tx_enqueue__immediate(struct aim_session_t *, struct command_tx_struct *);
faim_internal int aim_tx_enqueue(struct aim_session_t *, struct command_tx_struct *);
faim_internal int aim_tx_printqueue(struct aim_session_t *);
faim_internal int aim_parse_hostonline(struct aim_session_t *sess, struct command_rx_struct *command, ...);
faim_internal int aim_parse_hostversions(struct aim_session_t *sess, struct command_rx_struct *command, ...);
#endif /* FAIM_INTERNAL */
+#define AIM_TX_QUEUED 0 /* default */
+#define AIM_TX_IMMEDIATE 1
+#define AIM_TX_USER 2
+faim_export int aim_tx_setenqueue(struct aim_session_t *sess, int what, int (*func)(struct aim_session_t *, struct command_tx_struct *));
+
faim_export int aim_tx_flushqueue(struct aim_session_t *);
faim_export void aim_tx_purgequeue(struct aim_session_t *);