| 81 | } |
| 82 | |
| 83 | bool HttpConnection::OnWriteable() { |
| 84 | while (!m_send_queue.empty()) { |
| 85 | const std::string& data = m_send_queue.front(); |
| 86 | size_t data_size = data.size() - m_sent_size; |
| 87 | size_t sent_size; |
| 88 | if (m_socket.Send(data.data() + m_sent_size, data_size, &sent_size)) { |
| 89 | if (sent_size == data_size) { |
| 90 | m_send_queue.pop_front(); |
| 91 | m_sent_size = 0; |
| 92 | } else { |
| 93 | m_sent_size += sent_size; |
| 94 | break; |
| 95 | } |
| 96 | } else { |
| 97 | break; |
| 98 | } |
| 99 | } |
| 100 | return true; |
| 101 | } |
| 102 | |
| 103 | void HttpConnection::OnClosed() { |
| 104 | m_watcher.Stop(); |