diff --git a/examples/3_nondeterminism/amy.c b/examples/3_nondeterminism/amy.c new file mode 100644 index 0000000000000000000000000000000000000000..3e3f771509150187a1858943d39c507690ae7329 --- /dev/null +++ b/examples/3_nondeterminism/amy.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include "../../reowolf.h" +#include "../utility.c" + +int main() { // AMY + char * pdl = buffer_pdl("eg_protocols.pdl"); + + Connector* c = connector_new(); + printf("configuring...\n"); + + check("config ", connector_configure(c, pdl, "sync")); + check("bind 0 ", connector_bind_native(c, 0)); + check("bind 1 ", connector_bind_passive(c, 1, "127.0.0.1:7000")); + printf("connecting...\n"); + check("connect", connector_connect(c, 5000)); + + int send_next = 0; + char msg_buf[32]; + int code; + int i; + for (i = 0; 1; i++) { + itoa(send_next, msg_buf, 10); + + printf("\nround %d. Will send msg `%s` next", i, msg_buf); + + + // batch 0: no messages sent + check("next_batch ", connector_next_batch(c)); + + // batch 1: put 0 + check("put ", connector_put(c, 0, msg_buf, strlen(msg_buf) + 1)); + code = connector_sync(c, 3000); + + if (code == 0) printf("Sent no message!"); + else if (code == 1) { + printf("Sent message `%s`!", msg_buf); + send_next++; + } else { + printf( + "Connector error! %d (%s)\nBreaking loop!\n", + code, connector_error_peek() + ); + break; + } + } + + printf("destroying...\n"); + connector_destroy(c); + printf("exiting...\n"); + free(pdl); + return 0; +} \ No newline at end of file