]> andersk Git - libfaim.git/commitdiff
- Fri Feb 9 22:31:22 UTC 2001
authormid <mid>
Fri, 9 Feb 2001 22:35:14 +0000 (22:35 +0000)
committermid <mid>
Fri, 9 Feb 2001 22:35:14 +0000 (22:35 +0000)
  - Add aim_tx_setenqueue().

CHANGES
aim_conn.c
aim_txqueue.c
faim/aim.h

diff --git a/CHANGES b/CHANGES
index b46ed5b34f99ec03cf1968b4c64939fbbd386af0..fe46a5d8ae41bd44db5659c3d090a28c37ab94e4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
 
 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.
 
index 944708efbe37e11392129083027bcfd0a06f2eda..d8a8e210cfa22d3cb86d4c38c9556508019a51ea 100644 (file)
@@ -739,7 +739,7 @@ faim_export void aim_session_init(struct aim_session_t *sess, unsigned long flag
    * 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;
 }
index 3a12757df2a7b40d3777914c0ab73e6a6e205c6e..23ef74f81617b9713eabcff154b3e8ce19745a1d 100644 (file)
@@ -75,8 +75,7 @@ faim_internal struct command_tx_struct *aim_tx_new(unsigned char framing, int ch
  * 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;
 
@@ -127,7 +126,7 @@ faim_internal int aim_tx_enqueue__queuebased(struct aim_session_t *sess,
  * 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");
@@ -152,6 +151,25 @@ faim_internal int aim_tx_enqueue__immediate(struct aim_session_t *sess, struct c
   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)
 {
   /*
index b884dba6c734cdaef586425f3d1e2b8de6383049..7d224371bce969316134bc81f1efbca0b4c30681 100644 (file)
@@ -478,14 +478,17 @@ faim_internal int aim_get_command_rendezvous(struct aim_session_t *sess, struct
 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 *);
 
This page took 0.07288 seconds and 5 git commands to generate.