MCPcopy Create free account
hub / github.com/alibaba/PhotonLibOS / chunked_handler_pt

Function chunked_handler_pt

net/http/test/client_function_test.cpp:312–339  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

310}
311std::vector<int> rec;
312int chunked_handler_pt(void*, ISocketStream* sock) {
313 EXPECT_NE(nullptr, sock);
314 char recv[4096];
315 auto len = sock->recv(recv, 4096);
316 if (len < 0)
317 LOG_ERRNO_RETURN(0, -1, "failed to read from socket ");
318 LOG_DEBUG("Accepted");
319 EXPECT_GT(len, 0);
320 auto ret = sock->write(header_data, sizeof(header_data) - 1);
321 EXPECT_EQ(sizeof(header_data) - 1, ret);
322 size_t offset = 0;
323 rec.clear();
324 while (offset < std_data_size) {
325 auto remain = std_data_size - offset;
326 if (remain <= 1024) {
327 rec.push_back(remain);
328 chunked_send(offset, remain, sock);
329 break;
330 }
331 auto max_seg = std::min(remain - 1024, 2 * 4 * 1024UL);
332 auto seg = 1024 + rand() % max_seg;
333 chunked_send(offset, seg, sock);
334 rec.push_back(seg);
335 offset += seg;
336 }
337 sock->write("0\r\n\r\n", 5);
338 return 0;
339}
340
341TEST(http_client, chunked) {
342 auto server = new_tcp_socket_server();

Callers

nothing calls this directly

Calls 6

minFunction · 0.85
chunked_sendFunction · 0.70
recvMethod · 0.45
writeMethod · 0.45
clearMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected