| 104 | self._written_meta_strings = {} |
| 105 | |
| 106 | def write_encoded_meta_string(self, buffer, encoded_meta_string: EncodedMetaString): |
| 107 | entry = self._written_meta_strings.get(id(encoded_meta_string)) |
| 108 | length = encoded_meta_string.length |
| 109 | if entry is None: |
| 110 | dynamic_id = len(self._written_meta_strings) |
| 111 | self._written_meta_strings[id(encoded_meta_string)] = (dynamic_id, encoded_meta_string) |
| 112 | buffer.write_var_uint32(length << 1) |
| 113 | if length <= SMALL_STRING_THRESHOLD: |
| 114 | if length != 0: |
| 115 | buffer.write_int8(encoded_meta_string.encoding) |
| 116 | else: |
| 117 | buffer.write_int64(encoded_meta_string.hashcode) |
| 118 | buffer.write_bytes(encoded_meta_string.data) |
| 119 | return |
| 120 | buffer.write_var_uint32(((entry[0] + 1) << 1) | 1) |
| 121 | |
| 122 | def reset(self): |
| 123 | self._written_meta_strings.clear() |