MCPcopy Index your code
hub / github.com/apache/fory / _read_big_meta_string

Method _read_big_meta_string

python/pyfory/context.py:180–198  ·  view source on GitHub ↗
(self, buffer, length: int)

Source from the content-addressed store, hash-verified

178 return encoded_meta_string
179
180 def _read_big_meta_string(self, buffer, length: int):
181 hashcode = buffer.read_int64()
182 encoding = hashcode & 0xFF
183 if encoding > 4:
184 raise ValueError(f"Unexpected encoding flag: {encoding}")
185 reader_index = buffer.get_reader_index()
186 buffer.check_bound(reader_index, length)
187 data = buffer.get_bytes(reader_index, length)
188 buffer.set_reader_index(reader_index + length)
189 canonical_hash = hash_meta_string_data(data, encoding)
190 if canonical_hash != hashcode:
191 raise ValueError("Malformed metastring hash")
192 key = (hashcode, data)
193 encoded_meta_string = self._hash_to_encoded_meta_strings.get(key)
194 if encoded_meta_string is None:
195 encoded_meta_string = self.shared_registry.get_or_create_encoded_meta_string(data, hashcode)
196 if length <= MAX_CACHED_META_STRING_LENGTH and len(self._hash_to_encoded_meta_strings) < MAX_CACHED_META_STRINGS:
197 self._hash_to_encoded_meta_strings[key] = encoded_meta_string
198 return encoded_meta_string
199
200 def reset(self):
201 self._dynamic_id_to_encoded_meta_strings.clear()

Callers 1

Calls 6

hash_meta_string_dataFunction · 0.85
check_boundMethod · 0.80
get_bytesMethod · 0.80
getMethod · 0.65
read_int64Method · 0.45

Tested by

no test coverage detected