void on_socket(NS *ns, int fd, const char *data, int size, void *udata) { int n; char *str; make_sure_that(data == nsIncoming(ns, fd)); make_sure_that(size == nsAvailable(ns, fd)); n = strunpack(data, size, PACK_STRING, &str, END); nsDiscard(ns, fd, n); P dbgPrint(stderr, "fd = %d, str = \"%s\", n = %d\n", fd, str, n); }
void on_ping(MX *mx, int fd, uint32_t type, uint32_t version, char *payload, uint32_t size, void *udata) { uint32_t count; strunpack(payload, size, PACK_INT32, &count, END); free(payload); fprintf(stderr, "Echo: received ping %d, broadcasting echo.\n", count); mxPackAndBroadcast(mx, echo_msg, 0, PACK_INT32, count, END); if (count == 5) { mxCancel(mx, ping_msg); } }