OSSP CVS Repository

ossp - Difference in ossp-pkg/sio/sio_test2.c versions 1.1 and 1.2
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/sio/sio_test2.c 1.1 -> 1.2

--- sio_test2.c  2002/11/29 12:58:59     1.1
+++ sio_test2.c  2002/11/29 15:45:25     1.2
@@ -6,10 +6,15 @@
 #include "al.h"
 #include "sio.h"
 
+static char oddlabel, evenlabel;
+#define ODDLABEL  ((al_label_t)&oddlabel)
+#define EVENLABEL ((al_label_t)&evenlabel)
+
 extern sio_module_t sio_module_fd;
 extern sio_module_t sio_module_zlib;
 extern sio_module_t sio_module_buffer;
 extern sio_module_t sio_module_sio;
+extern sio_module_t sio_module_sillymux;
 
 #define e(f) rc = f; printf("%s = %s\n",#f, sio_error(rc)); fflush(stdout);
 #define s(f) src = f; printf("%s = %s\n",#f, sa_error(src)); fflush(stdout);
@@ -21,10 +26,15 @@
 
     sio_t *sio;
     sio_stage_t *sios_fd, *sios_buffer, *sios_zlib;
+    sio_stage_t *sios_sillymux;
+
+    sio_t *sio2a;
+    sio_stage_t *sios2a_sio;
 
-    sio_t *sio2;
-    sio_stage_t *sios2_sio;
-    al_label_t data_label, error_label, eof_label;
+    sio_t *sio2b;
+    sio_stage_t *sios2b_sio;
+
+    al_label_t label;
 
     char buf[513];
     size_t buflen;
@@ -49,6 +59,7 @@
     e(sio_create_stage(sio, &sio_module_fd, &sios_fd));
     e(sio_create_stage(sio, &sio_module_zlib, &sios_zlib));
     e(sio_create_stage(sio, &sio_module_buffer, &sios_buffer));
+    e(sio_create_stage(sio, &sio_module_sillymux, &sios_sillymux));
 
     e(sio_configure_stage(sio, sios_fd, "fd", &fd));
     buflen = 512;
@@ -66,46 +77,71 @@
     level = -1;
     e(sio_configure_stage(sio, sios_zlib, "inputlevel", &level));
 
-    e(sio_create(&sio2));
-    e(sio_create_stage(sio2, &sio_module_sio, &sios2_sio));
+    e(sio_configure_stage(sio, sios_sillymux, "oddlabel", ODDLABEL));
+    e(sio_configure_stage(sio, sios_sillymux, "evenlabel", EVENLABEL));
 
-    e(sio_label(sio, SIO_LN_DATA, &data_label));
-    e(sio_label(sio, SIO_LN_ERROR, &error_label));
-    e(sio_label(sio, SIO_LN_EOF, &eof_label));
-    e(sio_configure_stage(sio2, sios2_sio, "upstream", sio));
-    e(sio_configure_stage(sio2, sios2_sio, "mydatalabel", data_label));
-    e(sio_configure_stage(sio2, sios2_sio, "myerrorlabel", error_label));
-    e(sio_configure_stage(sio2, sios2_sio, "myeoflabel", eof_label));
+    e(sio_create(&sio2a));
+    e(sio_create_stage(sio2a, &sio_module_sio, &sios2a_sio));
+    e(sio_configure_stage(sio2a, sios2a_sio, "upstream", sio));
+    e(sio_configure_stage(sio2a, sios2a_sio, "mydatalabel", ODDLABEL));
+    e(sio_attach(sio2a, sios2a_sio, SIO_MODE_READWRITE));
+
+    e(sio_create(&sio2b));
+    e(sio_create_stage(sio2b, &sio_module_sio, &sios2b_sio));
+    e(sio_configure_stage(sio2b, sios2b_sio, "upstream", sio));
+    e(sio_configure_stage(sio2b, sios2b_sio, "mydatalabel", EVENLABEL));
+    e(sio_attach(sio2b, sios2b_sio, SIO_MODE_READWRITE));
 
-    e(sio_attach(sio2, sios2_sio, SIO_MODE_READWRITE));
 
     {
         e(sio_attach(sio, sios_fd, SIO_MODE_READWRITE));
         e(sio_attach(sio, sios_zlib, SIO_MODE_READWRITE));
         e(sio_attach(sio, sios_buffer, SIO_MODE_READWRITE));
+        e(sio_attach(sio, sios_sillymux, SIO_MODE_READWRITE));
 
 #ifdef WRITE
         e(sio_write(sio2, buf, strlen(buf), &actual));
         e(sio_push(sio2));
 #else
         do {
+
+            printf("READ A\n");
+            actual = 0;
+            e(sio_read(sio2a, buf, sizeof(buf), &actual));
+            printf("actual_a = %d\n",actual);
+            fwrite(buf, actual, 1, stdout);
+            printf("\n");
+
+            printf("READ B\n");
             actual = 0;
-            e(sio_read(sio2, buf, sizeof(buf), &actual));
+            e(sio_read(sio2b, buf, sizeof(buf), &actual));
+            printf("actual_b = %d\n",actual);
+            fwrite(buf, actual, 1, stdout);
+            printf("\n");
+
+            printf("READ MUX\n");
+            actual = 0;
+            e(sio_read(sio, buf, sizeof(buf), &actual));
             printf("actual = %d\n",actual);
             fwrite(buf, actual, 1, stdout);
             printf("\n");
-        } while (sio_flag(sio2, SIO_FLAG_EOF) == SIO_FALSE);
+
+        } while (sio_flag(sio, SIO_FLAG_EOF) == SIO_FALSE);
 #endif
 
+        e(sio_detach(sio, sios_sillymux));
         e(sio_detach(sio, sios_buffer));
         e(sio_detach(sio, sios_zlib));
         e(sio_detach(sio, sios_fd));
     }
 
-    e(sio_detach(sio2, sios2_sio));
-
-    e(sio_destroy_stage(sio2, sios2_sio));
-    e(sio_destroy(sio2));
+    e(sio_detach(sio2b, sios2b_sio));
+    e(sio_destroy_stage(sio2b, sios2b_sio));
+    e(sio_destroy(sio2b));
+
+    e(sio_detach(sio2a, sios2a_sio));
+    e(sio_destroy_stage(sio2a, sios2a_sio));
+    e(sio_destroy(sio2a));
 
     e(sio_destroy_stage(sio, sios_buffer));
     e(sio_destroy_stage(sio, sios_zlib));

CVSTrac 2.0.1