void SocketReply::handle(EventHandler &handler) { size_t to_write = data.size() - ptr; ssize_t ret = write(fd, data.data() + ptr, to_write); if (ret <= 0) { handler.remove(*this); end_cb(false); } else ptr += ret; if (ptr >= data.size()) { handler.remove(*this); end_cb(true); } }