MCPcopy Create free account
hub / github.com/Meituan-Dianping/SQLAdvisor / fillData

Method fillData

extra/yassl/src/yassl_int.cpp:1172–1198  ·  view source on GitHub ↗

use input buffer to fill data

Source from the content-addressed store, hash-verified

1170
1171// use input buffer to fill data
1172void SSL::fillData(Data& data)
1173{
1174 if (GetError()) return;
1175 uint dataSz = data.get_length(); // input, data size to fill
1176 size_t elements = buffers_.getData().size();
1177
1178 data.set_length(0); // output, actual data filled
1179 dataSz = min(dataSz, bufferedData());
1180
1181 for (size_t i = 0; i < elements; i++) {
1182 input_buffer* front = buffers_.getData().front();
1183 uint frontSz = front->get_remaining();
1184 uint readSz = min(dataSz - data.get_length(), frontSz);
1185
1186 front->read(data.set_buffer() + data.get_length(), readSz);
1187 data.set_length(data.get_length() + readSz);
1188
1189 if (readSz == frontSz) {
1190 buffers_.useData().pop_front();
1191 ysDelete(front);
1192 }
1193 if (data.get_length() == dataSz)
1194 break;
1195 }
1196
1197 if (buffers_.getData().size() == 0) has_data_ = false; // none left
1198}
1199
1200
1201// like Fill but keep data in buffer

Callers 1

receiveDataFunction · 0.80

Calls 10

minFunction · 0.85
ysDeleteFunction · 0.85
set_lengthMethod · 0.80
get_remainingMethod · 0.80
set_bufferMethod · 0.80
get_lengthMethod · 0.45
sizeMethod · 0.45
frontMethod · 0.45
readMethod · 0.45
pop_frontMethod · 0.45

Tested by

no test coverage detected