OSSP CVS Repository

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

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

--- sio_test.c   2002/10/23 17:05:10     1.1
+++ sio_test.c   2002/11/05 13:23:36     1.2
@@ -3,44 +3,85 @@
 #include "al.h"
 #include "sio.h"
 
-extern sio_module_t sio_module_fd;
+#include "sa.h"
+
+extern sio_module_t sio_module_sa;
+extern sio_module_t sio_module_hello;
 extern sio_module_t sio_module_buffer;
 
 #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);
 
 int main(int argc, char *argv[])
 {
     sio_rc_t rc;
     sio_t *sio;
-    sio_stage_t *sios_fd, *sios_buffer;
-    int fd;
+    sio_stage_t *sios_sa, *sios_hello, *sios_buffer;
+
+    sa_rc_t src;
+    sa_addr_t *saa;
+    sa_t *msa, *sa;
+    char *uri;
+
     char buf[] = "Hello world\n";
+
     size_t actual;
-    size_t buflen = 1000;
+    size_t buflen;
 
-    fd = fileno(stdout);
+    s(sa_create(&msa));
+    s(sa_option(msa, SA_OPTION_REUSEADDR, 1));
 
-    e(sio_create(&sio));
+    s(sa_addr_create(&saa));
+    uri = "inet://localhost:25001#tcp";
+    s(sa_addr_u2a(saa, uri));
+    s(sa_bind(msa,saa));
+    s(sa_addr_destroy(saa));
+    uri = NULL;
 
+    e(sio_create(&sio));
+    e(sio_create_stage(sio, &sio_module_sa, &sios_sa));
+    e(sio_create_stage(sio, &sio_module_hello, &sios_hello));
     e(sio_create_stage(sio, &sio_module_buffer, &sios_buffer));
+
+    buflen = 256;
+    e(sio_configure_stage(sio, sios_sa, "buflen", &buflen));
+
+    buflen = 1000;
     e(sio_configure_stage(sio, sios_buffer, "outputsize", &buflen));
-    e(sio_create_stage(sio, &sio_module_fd, &sios_fd));
-    e(sio_configure_stage(sio, sios_fd, "fd", &fd));
 
-    e(sio_attach(sio, sios_buffer, SIO_MODE_WRITE));
-    e(sio_attach(sio, sios_fd, SIO_MODE_WRITE));
+    s(sa_listen(msa, 5));
+
+    for(;;) {
+
+        s(sa_accept(msa, &saa, &sa));
+        s(sa_addr_a2u(saa, &uri));
+        printf("Connection from %s\n",uri);
+        s(sa_addr_destroy(saa));
+
+        e(sio_configure_stage(sio, sios_sa, "sa", sa));
 
-    e(sio_write(sio, buf, sizeof(buf)-1, &actual));
+        e(sio_attach(sio, sios_buffer, SIO_MODE_WRITE));
+        e(sio_attach(sio, sios_hello, SIO_MODE_READWRITE));
+        e(sio_attach(sio, sios_sa, SIO_MODE_READWRITE));
 
-    e(sio_push(sio));
+        e(sio_write(sio, buf, sizeof(buf)-1, &actual));
+        e(sio_push(sio));
+
+        e(sio_detach(sio, sios_sa));
+        e(sio_detach(sio, sios_hello));
+        e(sio_detach(sio, sios_buffer));
+
+        sa_destroy(sa);
+    }
 
-    e(sio_detach(sio, sios_fd));
-    e(sio_detach(sio, sios_buffer));
 
-    e(sio_destroy_stage(sio, sios_fd));
     e(sio_destroy_stage(sio, sios_buffer));
+    e(sio_destroy_stage(sio, sios_hello));
+    e(sio_destroy_stage(sio, sios_sa));
 
     e(sio_destroy(sio));
 
+    sa_destroy(msa);
+
     return 0;
 }

CVSTrac 2.0.1