MCPcopy Create free account
hub / github.com/Tencent/MMKV / readData

Method readData

Core/CodedInputDataCrypt.cpp:243–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

241}
242
243void CodedInputDataCrypt::readData(KeyValueHolderCrypt &kvHolder) {
244 int32_t size = this->readRawVarint32();
245 if (size < 0) {
246 throw length_error("InvalidProtocolBuffer negativeSize");
247 }
248
249 auto s_size = static_cast<size_t>(size);
250 if (s_size <= m_size - m_position) {
251 if (KeyValueHolderCrypt::isValueStoredAsOffset(s_size)) {
252 kvHolder.type = KeyValueHolderType_Offset;
253 kvHolder.valueSize = static_cast<uint32_t>(s_size);
254 kvHolder.pbKeyValueSize =
255 static_cast<uint8_t>(pbRawVarint32Size(kvHolder.valueSize) + pbRawVarint32Size(kvHolder.keySize));
256
257 size_t rollbackSize = kvHolder.pbKeyValueSize + kvHolder.keySize;
258 statusBeforeDecrypt(rollbackSize, kvHolder.cryptStatus);
259
260 skipBytes(s_size);
261 } else {
262 consumeBytes(s_size);
263
264 kvHolder.type = KeyValueHolderType_Direct;
265 kvHolder = KeyValueHolderCrypt(m_decryptBuffer + m_decryptBufferPosition, s_size);
266 m_decryptBufferPosition += s_size;
267 m_position += s_size;
268 }
269 } else {
270 throw out_of_range("InvalidProtocolBuffer truncatedMessage");
271 }
272}
273
274} // namespace mmkv
275

Callers

nothing calls this directly

Calls 3

readRawVarint32Method · 0.95
pbRawVarint32SizeFunction · 0.70
KeyValueHolderCryptClass · 0.70

Tested by

no test coverage detected