#include #include #include #include #include "../../reowolf.h" #include "../utility.c" int main(int arg_c, char * argv[]) { int index; if (arg_c != 2) { printf("Expected one arg: which peer I am in 0..4"); return 1; } index = atoi(argv[1]); printf("I am peer %d\n", index); const char* addrs[] = { "127.0.0.1:7000", "127.0.0.1:7001", "127.0.0.1:7002", "127.0.0.1:7003", "127.0.0.1:7004", "127.0.0.1:7005", }; char * pdl = buffer_pdl("eg_protocols.pdl"); Connector* c = connector_new(); printf("configuring...\n"); check("config ", connector_configure(c, pdl, "xor_three")); int i, j; int addr_index = 0; int port = 0; for (i = 0; i < 4; i++) { for (j = i+1; j < 4; j++) { if (i==index) { printf("ports %d and %d are for a passive channel to peer %d over addr %s\n", port, port+1, j, addrs[addr_index]); check("bind an ", connector_bind_native(c, port)); port++; check("bind a ", connector_bind_active(c, port, addrs[addr_index])); port++; } else if (j==index) { printf("ports %d and %d are for an active channel to peer %d over addr %s\n", port, port+1, i, addrs[addr_index]); check("bind p ", connector_bind_passive(c, port, addrs[addr_index])); port++; check("bind pn ", connector_bind_native(c, port)); port++; } addr_index++; } } check("connect", connector_connect(c, 5000)); for (i = 0; i < 4; i++) { if (i == index) continue; // another batch for (j = 0; j < 4; j++) { } } connector_sync(); printf("destroying...\n"); connector_destroy(c); printf("exiting...\n"); free(pdl); return 0; }