Files
@ 36cc1fe490f7
Branch filter:
Location: CSY/reowolf/examples/pres_2/bob.c - annotation
36cc1fe490f7
1.3 KiB
text/x-csrc
Merge branch 'feat-api-cmds-and-branching'
Implements the programmer-facing API to allow programmatic
specification of a synchronous round. The way in which these put/get
interactions are performed is in an initial shape. Perhaps this will
change in the future.
The second main set of changes is the addion of a 'fork' statement,
which allows explicit forking, and allowing multiple puts/gets over the
same transport link within a single sync round.
Implements the programmer-facing API to allow programmatic
specification of a synchronous round. The way in which these put/get
interactions are performed is in an initial shape. Perhaps this will
change in the future.
The second main set of changes is the addion of a 'fork' statement,
which allows explicit forking, and allowing multiple puts/gets over the
same transport link within a single sync round.
a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee 14c1a07d148a 14c1a07d148a a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee 8df425c3752e a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee a3c92705eeee 8df425c3752e | #include "../../reowolf.h"
#include "../utility.c"
int main(int argc, char** argv) {
// Create a connector, configured with a protocol defined in a file
char * pdl = buffer_pdl("./eg_protocols.pdl");
Arc_ProtocolDescription * pd = protocol_description_parse(pdl, strlen(pdl));
char logpath[] = "./pres_2_bob.txt";
Connector * c = connector_new_logging(pd, logpath, sizeof(logpath)-1);
rw_err_peek(c);
// ... with 1 outgoing network connection
PortId ports[3];
FfiSocketAddr addr = {{127,0,0,1}, 8000};
connector_add_net_port(c, &ports[0], addr, Polarity_Getter, EndpointPolarity_Active);
connector_add_port_pair(c, &ports[1], &ports[2]);
connector_add_component(c, "pres_2", 6, ports, 2);
rw_err_peek(c);
// Connect with peers (5000ms timeout).
connector_connect(c, 5000);
rw_err_peek(c);
// Prepare to receive a message.
connector_get(c, ports[2]);
rw_err_peek(c);
// ... reach new consistent state within 1000ms deadline.
connector_sync(c, 1000);
rw_err_peek(c);
// Read our received message
size_t msg_len;
const char * msg_ptr = connector_gotten_bytes(c, ports[2], &msg_len);
printf("Got msg `%.*s`\n", (int) msg_len, msg_ptr);
printf("Exiting\n");
protocol_description_destroy(pd);
connector_destroy(c);
free(pdl);
sleep(1.0);
return 0;
}
|