static void pinger_read_cb(uv_handle_t* handle, int nread, uv_buf_t buf) { unsigned int i; pinger_t* pinger; pinger = (pinger_t*)handle->data; if (nread < 0) { ASSERT(uv_last_error().code == UV_EOF); if (buf.base) { buf_free(buf); } return; } /* Now we count the pings */ for (i = 0; i < nread; i++) { ASSERT(buf.base[i] == PING[pinger->state]); pinger->state = (pinger->state + 1) % (sizeof(PING) - 1); if (pinger->state == 0) { pinger->pongs++; if (uv_now() - start_time > TIME) { uv_req_init(&pinger->shutdown_req, handle, pinger_shutdown_cb); uv_shutdown(&pinger->shutdown_req); break; return; } else { pinger_write_ping(pinger); } } } buf_free(buf); }
static void pinger_on_connect(uv_connect_t *req, int status) { pinger_t *pinger = (pinger_t*)req->handle->data; ASSERT(status == 0); pinger_write_ping(pinger); uv_read_start((uv_stream_t*)(req->handle), alloc_cb, pinger_read_cb); }
static void pinger_connect_cb(uv_req_t *req, int status) { pinger_t *pinger = (pinger_t*)req->handle->data; ASSERT(status == 0); pinger_write_ping(pinger); if (uv_read_start((uv_tcp_t*)(req->handle), buf_alloc, pinger_read_cb)) { FATAL("uv_read_start failed"); } }
static void pinger_on_connect(uv_connect_t *req, int status) { pinger_t *pinger = (pinger_t*)req->handle->data; pinger_on_connect_count++; ASSERT(status == 0); ASSERT(uv_is_readable(req->handle)); ASSERT(uv_is_writable(req->handle)); ASSERT(!uv_is_closing((uv_handle_t *)req->handle)); pinger_write_ping(pinger); uv_read_start((uv_stream_t*)(req->handle), alloc_cb, pinger_read_cb); }
static void pinger_read_cb(uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) { ssize_t i; pinger_t* pinger; pinger = (pinger_t*)stream->data; if (nread < 0) { ASSERT(nread == UV_EOF); puts("got EOF"); free(buf->base); uv_close((uv_handle_t*)(&pinger->stream.tcp), pinger_on_close); return; } /* Now we count the pings */ for (i = 0; i < nread; i++) { ASSERT(buf->base[i] == PING[pinger->state]); pinger->state = (pinger->state + 1) % (sizeof(PING) - 1); if (pinger->state != 0) continue; printf("PONG %d\n", pinger->pongs); pinger->pongs++; if (pinger->pongs < NUM_PINGS) { pinger_write_ping(pinger); } else { uv_close((uv_handle_t*)(&pinger->stream.tcp), pinger_on_close); break; } } free(buf->base); }
static void pinger_read_cb(uv_stream_t* tcp, ssize_t nread, const uv_buf_t* buf) { ssize_t i; pinger_t* pinger; pinger = (pinger_t*)tcp->data; if (nread < 0) { ASSERT(nread == UV_EOF); if (buf->base) { buf_free(buf); } ASSERT(pinger_shutdown_cb_called == 1); uv_close((uv_handle_t*)tcp, pinger_close_cb); return; } /* Now we count the pings */ for (i = 0; i < nread; i++) { ASSERT(buf->base[i] == PING[pinger->state]); pinger->state = (pinger->state + 1) % (sizeof(PING) - 1); if (pinger->state == 0) { pinger->pongs++; if (uv_now(loop) - start_time > TIME) { uv_shutdown(&pinger->shutdown_req, (uv_stream_t*) tcp, pinger_shutdown_cb); break; } else { pinger_write_ping(pinger); } } } buf_free(buf); }
static void pinger_read_cb(uv_stream_t* stream, ssize_t nread, uv_buf_t buf) { ssize_t i; pinger_t* pinger; pinger = (pinger_t*)stream->data; if (nread < 0) { ASSERT(uv_last_error(uv_default_loop()).code == UV_EOF); puts("got EOF"); if (buf.base) { free(buf.base); } uv_close((uv_handle_t*)(&pinger->stream.tcp), pinger_on_close); return; } /* Now we count the pings */ for (i = 0; i < nread; i++) { ASSERT(buf.base[i] == PING[pinger->state]); pinger->state = (pinger->state + 1) % (sizeof(PING) - 1); if (pinger->state == 0) { printf("PONG %d\n", pinger->pongs); pinger->pongs++; if (pinger->pongs < NUM_PINGS) { pinger_write_ping(pinger); } else { uv_close((uv_handle_t*)(&pinger->stream.tcp), pinger_on_close); return; } } } }