| 837 | center->dispatch_event_external(new C_delete<Server>(this)); |
| 838 | } |
| 839 | void do_read_request() { |
| 840 | if (dead) |
| 841 | return ; |
| 842 | int r = 0; |
| 843 | while (true) { |
| 844 | char buf[4096]; |
| 845 | bufferptr data; |
| 846 | r = socket.read(buf, sizeof(buf)); |
| 847 | ASSERT_TRUE(r == -EAGAIN || (r >= 0 && (size_t)r <= sizeof(buf))); |
| 848 | if (r == 0) { |
| 849 | ASSERT_TRUE(buffers.empty()); |
| 850 | dead = true; |
| 851 | return ; |
| 852 | } else if (r == -EAGAIN) |
| 853 | break; |
| 854 | buffers.emplace_back(buf, 0, r); |
| 855 | std::cerr << " server " << this << " receive " << r << " content: " << std::endl; |
| 856 | } |
| 857 | if (!buffers.empty() && !write_enabled) |
| 858 | center->dispatch_event_external(&write_ctxt); |
| 859 | } |
| 860 | |
| 861 | void do_write_request() { |
| 862 | if (dead) |
nothing calls this directly
no test coverage detected