MCPcopy Create free account
hub / github.com/apache/trafficserver / synserver_txn_write_response

Function synserver_txn_write_response

src/api/InkAPITest.cc:982–1018  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

980}
981
982static int
983synserver_txn_write_response(TSCont contp)
984{
985 ServerTxn *txn = static_cast<ServerTxn *>(TSContDataGet(contp));
986 TSAssert(txn->magic == MAGIC_ALIVE);
987
988 SET_TEST_HANDLER(txn->current_handler, synserver_txn_write_response_handler);
989
990 TSIOBufferBlock block;
991 char *ptr_block;
992 int64_t len, ndone, ntodo, towrite, avail;
993 char *response;
994
995 response = generate_response(txn->request);
996 len = strlen(response);
997
998 ndone = 0;
999 ntodo = len;
1000 while (ntodo > 0) {
1001 block = TSIOBufferStart(txn->resp_buffer);
1002 ptr_block = TSIOBufferBlockWriteStart(block, &avail);
1003 towrite = std::min(ntodo, avail);
1004 memcpy(ptr_block, response + ndone, towrite);
1005 TSIOBufferProduce(txn->resp_buffer, towrite);
1006 ntodo -= towrite;
1007 ndone += towrite;
1008 }
1009
1010 /* Start writing the response */
1011 Dbg(dbg_ctl_SockServer, "Writing response: |%s| (%" PRId64 ") bytes)", response, len);
1012 txn->write_vio = TSVConnWrite(txn->vconn, contp, txn->resp_reader, len);
1013
1014 /* Now that response is in IOBuffer, free up response */
1015 TSfree(response);
1016
1017 return TS_EVENT_IMMEDIATE;
1018}
1019
1020static int
1021synserver_txn_write_response_handler(TSCont contp, TSEvent event, void * /* data ATS_UNUSED */)

Callers 1

Calls 8

TSContDataGetFunction · 0.85
generate_responseFunction · 0.85
TSIOBufferStartFunction · 0.85
TSIOBufferProduceFunction · 0.85
TSVConnWriteFunction · 0.85
TSfreeFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected