/* This example demonstrates: - Synchronous channels can span the network if created by pairs of `connector_add_net_port` calls, each binding a port to the same address, with complementary polarities. - Ports created this way have two notions of polarity: - (port) Polarity in {Putter, Getter}: - Putter => resulting port can `connector_put`, - Getter => resulting port can `connector_get`, - Endpoint Polarity in {Active, Passive}: - Passive => underlying transport socket will `bind` to the given address, - Active => underlying transport socket will `connect` to the given address, */ #include #include #include "../../reowolf.h" #include "../utility.c" int main(int argc, char** argv) { Arc_ProtocolDescription * pd = protocol_description_parse("", 0); char logpath[] = "./8_amy_log.txt"; Connector * c = connector_new_logging(pd, logpath, sizeof(logpath)-1); printf("Error str `%s`\n", reowolf_error_peek(NULL)); PortId putter, getter; FfiSocketAddr addr = {{127, 0, 0, 1}, 8000}; // ipv4 127.0.0.1 (localhost) transport port 8000 connector_add_net_port(c, &putter, addr, Polarity_Putter, EndpointPolarity_Active); printf("Error str `%s`\n", reowolf_error_peek(NULL)); connector_add_net_port(c, &getter, addr, Polarity_Getter, EndpointPolarity_Passive); printf("Error str `%s`\n", reowolf_error_peek(NULL)); connector_connect(c, 4000); printf("Error str `%s`\n", reowolf_error_peek(NULL)); protocol_description_destroy(pd); connector_destroy(c); return 0; }