+bool connection::writepdu() {
+ VERIFY(wpdu_.status == inflight);
+ if (wpdu_.cursor == wpdu_.buf.size())
+ return true;
+
+ ssize_t n = write(fd, &wpdu_.buf[wpdu_.cursor], (wpdu_.buf.size()-wpdu_.cursor));
+ if (n < 0) {
+ if (errno != EAGAIN) {
+ IF_LEVEL(1) LOG << "writepdu fd " << fd << " failure errno=" << errno;
+ wpdu_ = {error, "", 0};
+ }
+ return (errno == EAGAIN);
+ }
+ wpdu_.cursor += (size_t)n;
+ return true;
+}
+