Initialize a value. Lock must be held by caller.
(self, key)
| 93 | return _read_all_values(data, used) |
| 94 | |
| 95 | def _init_value(self, key): |
| 96 | """Initialize a value. Lock must be held by caller.""" |
| 97 | encoded = key.encode('utf-8') |
| 98 | # Pad to be 8-byte aligned. |
| 99 | padded = encoded + (b' ' * (8 - (len(encoded) + 4) % 8)) |
| 100 | value = struct.pack(f'i{len(padded)}sdd'.encode(), len(encoded), padded, 0.0, 0.0) |
| 101 | while self._used + len(value) > self._capacity: |
| 102 | self._capacity *= 2 |
| 103 | self._f.truncate(self._capacity) |
| 104 | self._m = mmap.mmap(self._f.fileno(), self._capacity) |
| 105 | self._m[self._used:self._used + len(value)] = value |
| 106 | |
| 107 | # Update how much space we've used. |
| 108 | self._used += len(value) |
| 109 | _pack_integer(self._m, 0, self._used) |
| 110 | self._positions[key] = self._used - 16 |
| 111 | |
| 112 | def _read_all_values(self): |
| 113 | """Yield (key, value, pos). No locking is performed.""" |
no test coverage detected