write<T> method
Future<void>
write<T>({
- required KacheKey key,
- required KachePersistenceBinding<
T> binding, - required KachePersistedEntry<
T> entry,
override
Writes a typed entry for key using binding.
Implementations should call KachePersistenceBinding.ensureBackend before using the binding. Value conversion failures use KachePersistenceStage.encode, while storage access failures use KachePersistenceStage.backend.
Implementation
@override
Future<void> write<T>({
required KacheKey key,
required KachePersistenceBinding<T> binding,
required KachePersistedEntry<T> entry,
}) async {
_ensureOpen(KachePersistenceOperation.write);
binding.ensureBackend(this);
final existing = _entries[key.storageKey];
if (existing != null &&
existing.fingerprint == binding.fingerprint &&
existing.type != T) {
_throwBackendFailure(
KachePersistenceOperation.write,
'Memory persistence fingerprint cannot change its value type.',
);
}
_entries[key.storageKey] = _MemoryPersistedRecord(
fingerprint: binding.fingerprint,
type: T,
data: entry.data,
metadata: entry.metadata,
);
}