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

Method LoadBaseHeader

library/cpp/neh/tcp2.cpp:194–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

192
193 private:
194 size_t LoadBaseHeader(const char* buf, size_t len) {
195 size_t useBytes = Min<size_t>(sizeof(TBaseHeader) - Header_.Size(), len);
196 Header_.Append(buf, useBytes);
197 if (Y_UNLIKELY(sizeof(TBaseHeader) > Header_.Size())) {
198 //base header yet not complete
199 return useBytes;
200 }
201 {
202 const TBaseHeader& hdr = BaseHeader();
203 if (BaseHeader().HeaderLength > 32000) { //some heuristic header size limit
204 throw yexception() << TStringBuf("to large neh/tcp2 header size: ") << BaseHeader().HeaderLength;
205 }
206 //header completed
207 Header_.Reserve(hdr.HeaderLength);
208 }
209 const TBaseHeader& hdr = BaseHeader(); //reallocation can move Header_ data to another place, so use fresh 'hdr'
210 if (Y_UNLIKELY(hdr.Version != 1)) {
211 throw yexception() << TStringBuf("unsupported protocol version: ") << static_cast<unsigned>(hdr.Version);
212 }
213 RequireBytesForComplete_ = hdr.HeaderLength - sizeof(TBaseHeader);
214 return useBytes + LoadHeader(buf + useBytes, len - useBytes);
215 }
216
217 size_t LoadHeader(const char* buf, size_t len) {
218 size_t useBytes = Min<size_t>(RequireBytesForComplete_, len);

Callers

nothing calls this directly

Calls 4

yexceptionClass · 0.85
SizeMethod · 0.45
AppendMethod · 0.45
ReserveMethod · 0.45

Tested by

no test coverage detected