| 246 | } |
| 247 | |
| 248 | void HttpClient::handleNetworkEvent(yasio::io_event* event) |
| 249 | { |
| 250 | int channelIndex = event->cindex(); |
| 251 | auto channel = _service->channel_at(event->cindex()); |
| 252 | HttpResponse* response = (HttpResponse*)channel->ud_.ptr; |
| 253 | assert(response); |
| 254 | |
| 255 | bool responseFinished = response->isFinished(); |
| 256 | switch (event->kind()) |
| 257 | { |
| 258 | case YEK_ON_PACKET: |
| 259 | if (!responseFinished) |
| 260 | { |
| 261 | auto&& pkt = event->packet_view(); |
| 262 | auto err = response->input(pkt.data(), pkt.size()); |
| 263 | if (err != HPE_OK) |
| 264 | { |
| 265 | response->updateInternalCode(err); |
| 266 | _service->close(event->cindex()); |
| 267 | break; |
| 268 | } |
| 269 | } |
| 270 | if (response->isFinished()) |
| 271 | { |
| 272 | response->updateInternalCode(yasio::errc::eof); |
| 273 | _service->close(event->cindex()); |
| 274 | } |
| 275 | break; |
| 276 | case YEK_ON_OPEN: |
| 277 | if (event->status() == 0) |
| 278 | { |
| 279 | obstream obs; |
| 280 | bool usePostData = false; |
| 281 | auto request = response->getHttpRequest(); |
| 282 | switch (request->getRequestType()) |
| 283 | { |
| 284 | case HttpRequest::Type::GET: |
| 285 | obs.write_bytes("GET"); |
| 286 | break; |
| 287 | case HttpRequest::Type::PATCH: |
| 288 | obs.write_bytes("PATCH"); |
| 289 | usePostData = true; |
| 290 | break; |
| 291 | case HttpRequest::Type::POST: |
| 292 | obs.write_bytes("POST"); |
| 293 | usePostData = true; |
| 294 | break; |
| 295 | case HttpRequest::Type::DELETE: |
| 296 | obs.write_bytes("DELETE"); |
| 297 | break; |
| 298 | case HttpRequest::Type::PUT: |
| 299 | obs.write_bytes("PUT"); |
| 300 | usePostData = true; |
| 301 | break; |
| 302 | default: |
| 303 | obs.write_bytes("GET"); |
| 304 | break; |
| 305 | } |
nothing calls this directly
no test coverage detected