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

Class TDataHolder

library/cpp/par/par_wb.h:24–64  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22 class TLocalDataBuffer: public TThrRefBase {
23 TMutex Lock;
24 class TDataHolder { // Handles ptr to an object or it's serialized copy
25 TVector<TVector<char>> BinData;
26 TObj<IObjectBase> LocalObject;
27
28 public:
29 TDataHolder() {
30 }
31 TDataHolder(TVector<TVector<char>>& binData) {
32 BinData.swap(binData);
33 }
34 TDataHolder(const IObjectBase* localObject) {
35 LocalObject = const_cast<IObjectBase*>(localObject);
36 }
37 void SetData(TVector<TVector<char>>& binData) {
38 TVector<TVector<char>>().swap(BinData);
39 BinData.swap(binData);
40 if (LocalObject) {
41 LocalObject = nullptr;
42 }
43 }
44 void SetObject(const IObjectBase* localObject) {
45 LocalObject = const_cast<IObjectBase*>(localObject);
46 TVector<TVector<char>>().swap(BinData);
47 }
48 TVector<TVector<char>>& GetData() {
49 if (LocalObject) {
50 if (!BinData.size()) {
51 SerializeToMem(&BinData, LocalObject);
52 }
53 }
54 return BinData;
55 }
56 TObj<IObjectBase> GetObject() {
57 if (!LocalObject) {
58 TObj<IObjectBase> obj;
59 SerializeFromMem(&BinData, obj);
60 return obj;
61 }
62 return LocalObject;
63 }
64 };
65 // can not use smarter pointers due to non thread safe ref counters in IObjectBase
66 typedef THashMap<i64, TDataHolder> TDataHash;
67 TDataHash Data;

Callers

nothing calls this directly

Calls 2

SerializeToMemFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected