Files @ 952d4edf0cbb
Branch filter:

Location: CSY/reowolf/examples/0_forward/alice.c - annotation

sirkibsirkib
first C example
#include <stdio.h>
#include <string.h>
#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;
}