static int ADC_client_send_queue(struct ADC_client* client) { int ret = 0; while (ioq_send_get_bytes(client->send_queue)) { ret = ioq_send_send(client->send_queue, client->con); if (ret <= 0) break; } if (ret < 0) return quit_socket_error; if (ioq_send_get_bytes(client->send_queue)) { net_con_update(client->con, NET_EVENT_READ | NET_EVENT_WRITE); } else { net_con_update(client->con, NET_EVENT_READ); } return 0; }
int handle_net_write(struct hub_user* user) { int ret = 0; while (ioq_send_get_bytes(user->send_queue)) { ret = ioq_send_send(user->send_queue, user->connection); if (ret <= 0) break; } if (ret < 0) return quit_socket_error; if (ioq_send_get_bytes(user->send_queue)) { user_net_io_want_write(user); } else { user_net_io_want_read(user); } return 0; }