static void on_send(void *ud, zn_Tcp *tcp, unsigned err, unsigned count) { zn_BufferPoolNode *node = (zn_BufferPoolNode*)ud; if (err != ZN_OK) { zn_putbuffer(&pool, node); zn_deltcp(tcp); return; } send_count += count; zn_sendfinish(&node->send, count); }
static void on_send(void *ud, zn_Tcp *tcp, unsigned err, unsigned count) { zn_BufferPoolNode *data = (zn_BufferPoolNode*)ud; if (err != ZN_OK) { zn_deltcp(tcp); zn_putbuffer(&pool, data); return; } if (zn_sendfinish(&data->send, count)) zn_send(tcp, zn_sendbuff(&data->send), zn_sendsize(&data->send), on_send, ud); }
static void on_client_send(void *ud, zn_Tcp *tcp, unsigned err, unsigned count) { zn_BufferPoolNode *data = (zn_BufferPoolNode*)ud; if (err != ZN_OK) { ++send_err; client_error(tcp, data); return; } ++send_ok; send_bytes += count; if (zn_sendfinish(&data->send, count)) zn_send(tcp, zn_sendbuff(&data->send), zn_sendsize(&data->send), on_client_send, ud); }