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

Function transfer_all_bytes

plugins/slice/transfer.cc:86–123  ·  view source on GitHub ↗

transfer all bytes from the server (error condition)

Source from the content-addressed store, hash-verified

84
85// transfer all bytes from the server (error condition)
86int64_t
87transfer_all_bytes(Data *const data)
88{
89 // nothing to transfer if there's no source.
90 if (nullptr == data->m_upstream.m_read.m_reader || !data->m_dnstream.m_write.isOpen()) {
91 return 0;
92 }
93
94 int64_t consumed = 0; // input vio bytes visited
95
96 TSIOBufferReader const reader = data->m_upstream.m_read.m_reader;
97 TSIOBuffer const output_buf = data->m_dnstream.m_write.m_iobuf;
98
99 int64_t const read_avail = TSIOBufferReaderAvail(reader);
100
101 if (0 < read_avail) {
102 int64_t const copied = TSIOBufferCopy(output_buf, reader, read_avail, 0);
103
104 if (0 < copied) {
105 TSIOBufferReaderConsume(reader, copied);
106 consumed = copied;
107
108 TSVIO const output_vio = data->m_dnstream.m_write.m_vio;
109 if (nullptr != output_vio) {
110 TSVIOReenable(output_vio);
111 }
112 }
113 }
114
115 if (0 < consumed) {
116 TSVIO const input_vio = data->m_upstream.m_read.m_vio;
117 if (nullptr != input_vio) {
118 TSVIONDoneSet(input_vio, TSVIONDoneGet(input_vio) + consumed);
119 }
120 }
121
122 return consumed;
123}

Callers 1

handle_server_respFunction · 0.85

Calls 7

TSIOBufferReaderAvailFunction · 0.85
TSIOBufferCopyFunction · 0.85
TSVIOReenableFunction · 0.85
TSVIONDoneSetFunction · 0.85
TSVIONDoneGetFunction · 0.85
TSIOBufferReaderConsumeFunction · 0.50
isOpenMethod · 0.45

Tested by

no test coverage detected