11 struct utcp_connection *c;
13 ssize_t do_recv(struct utcp_connection *x, const void *data, size_t len) {
16 fprintf(stderr, "%p Error: %s\n", (void *)x->utcp, strerror(errno));
18 fprintf(stderr, "%p Connection closed by peer\n", (void *)x->utcp);
22 fprintf(stderr, "closing my side too...\n");
30 return write(0, data, len);
32 return utcp_send(x, data, len);
36 bool do_pre_accept(struct utcp *utcp, uint16_t port) {
38 fprintf(stderr, "pre-accept\n");
47 void do_accept(struct utcp_connection *c, uint16_t port) {
49 fprintf(stderr, "accept\n");
50 utcp_accept(c, do_recv, NULL);
53 ssize_t do_send(struct utcp *utcp, const void *data, size_t len) {
57 fprintf(stderr, "Too many packets!\n");
62 return utcp_recv(b, data, len);
64 return utcp_recv(a, data, len);
68 int main(int argc, char *argv[]) {
74 a = utcp_init(do_accept, do_pre_accept, do_send, NULL);
75 b = utcp_init(NULL, NULL, do_send, NULL);
77 fprintf(stderr, "Testing connection to closed port\n\n");
78 c = utcp_connect(b, 6, do_recv, NULL);
80 fprintf(stderr, "\nTesting conection to non-listening side\n\n");
81 c = utcp_connect(a, 7, do_recv, NULL);
83 fprintf(stderr, "\nTesting connection to open port, close\n\n");
84 c = utcp_connect(b, 7, do_recv, NULL);
85 fprintf(stderr, "closing...\n");
88 fprintf(stderr, "\nTesting connection to open port, abort\n\n");
89 c = utcp_connect(b, 7, do_recv, NULL);
90 fprintf(stderr, "aborting...\n");
93 fprintf(stderr, "\nTesting connection with data transfer\n\n");
95 c = utcp_connect(b, 7, do_recv, NULL);
96 ssize_t len = utcp_send(c, "Hello world!\n", 13);
100 fprintf(stderr, "Error: %s\n", strerror(errno));
102 fprintf(stderr, "Short write %zd!\n", len);
106 len = utcp_send(c, "This is a test.\n", 16);
110 fprintf(stderr, "Error: %s\n", strerror(errno));
112 fprintf(stderr, "Short write %zd!\n", len);
116 fprintf(stderr, "closing...\n");
119 fprintf(stderr, "\nTesting connection with huge data transfer\n\n");
121 c = utcp_connect(b, 7, do_recv, NULL);
122 utcp_set_sndbuf(c, 10240);
123 char buf[20480] = "buf";
125 len = utcp_send(c, buf, sizeof(buf));
128 fprintf(stderr, "Error: utcp_send() returned %zd, expected 10240\n", len);
131 fprintf(stderr, "closing...\n");