MCPcopy Create free account
hub / github.com/catboost/catboost / GetData

Method GetData

library/cpp/par/par_wb.h:214–246  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212 DO_EXTRACT
213 };
214 bool GetData(i64 key, TVector<char>* buf, EGetOp op) {
215 buf->resize(0);
216 TGuard<TMutex> gg(Lock);
217 SetDataFromQueueLocked();
218 TDataHash::iterator z = Data.find(key);
219 if (z == Data.end()) {
220 Y_ASSERT(0);
221 return false;
222 }
223
224 if (z->second.GetData().size() == 1) {
225 if (op == DO_COPY)
226 *buf = z->second.GetData().at(0);
227 else { // DO_EXTRACT
228 buf->swap(z->second.GetData().at(0));
229 Data.erase(z);
230 }
231 } else {
232 buf->resize(0);
233 if (op == DO_COPY) {
234 for (size_t i = 0; i < z->second.GetData().size(); ++i) {
235 buf->insert(buf->end(), z->second.GetData().at(i).begin(), z->second.GetData().at(i).end());
236 }
237 } else { // DO_EXTRACT
238 for (size_t i = 0; i < z->second.GetData().size(); ++i) {
239 buf->insert(buf->end(), z->second.GetData().at(i).begin(), z->second.GetData().at(i).end());
240 TVector<char>().swap(z->second.GetData().at(i));
241 }
242 Data.erase(z);
243 }
244 }
245 return true;
246 }
247
248 bool GetData(i64 key, TVector<TVector<char>>* buf, EGetOp op) {
249 buf->resize(0);

Callers 2

RunMethod · 0.45
NewRequestMethod · 0.45

Calls 9

resizeMethod · 0.45
findMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
atMethod · 0.45
swapMethod · 0.45
eraseMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected