diff --git a/examples/0_forward/alice.c b/examples/0_forward/alice.c new file mode 100644 index 0000000000000000000000000000000000000000..43ec7726a57900c2946a8356f26173459656246a --- /dev/null +++ b/examples/0_forward/alice.c @@ -0,0 +1,63 @@ +#include +#include +#include "../../reowolf.h" + +int main() { + // ALICE + + char* pdl ="\ + primitive forward(in i, out o) {\ + while(true) synchronous {\ + put(o, get(i));\ + }\ + }"; + + + char msg_buf[128]; + memset(msg_buf, 0, 128); + + printf("input a message to send:"); + if (fgets(msg_buf, 128-1, stdin) == NULL) { + printf("LINE READ BAD\n"); + return 1; + } + int msg_len = strlen(msg_buf); + msg_buf[msg_len-1] = 0; + printf("sending msg `%s`\n", msg_buf); + + Connector* c = connector_new(); + if (connector_configure(c, pdl, "forward")) { + printf("CONFIG FAILED: %s\n", connector_error_peek()); + return 1; + } + if (connector_bind_native(c, 0)) { + printf("BIND0 FAILED: %s\n", connector_error_peek()); + return 1; + } + if (connector_bind_passive(c, 1, "127.0.0.1:7000")) { + printf("BIND1 FAILED: %s\n", connector_error_peek()); + return 1; + } + printf("connecting... \n"); + if (connector_connect(c, 10000)) { + printf("CONNECT FAILED: %s\n", connector_error_peek()); + return 1; + } + + int i; + for (i = 0; i < 3; i++) { + if (connector_put(c, 0, msg_buf, msg_len)) { + printf("CONNECT PUT: %s\n", connector_error_peek()); + return 1; + } + if (connector_sync(c, 10000)) { + printf("SYNC FAILED: %s\n", connector_error_peek()); + return 1; + } + printf("SEND OK\n"); + } + + printf("OK\n"); + connector_destroy(c); + return 0; +} \ No newline at end of file