--- 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));
|