write<T> method

  1. @override
Future<void> write<T>({
  1. required KacheKey key,
  2. required KachePersistenceBinding<T> binding,
  3. 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,
  );
}