BackgroundCompactor class

Background compaction for Rift boxes. Performs incremental compaction without blocking reads.

The BackgroundCompactor runs compaction on registered boxes at regular intervals. This is useful for long-running applications where boxes accumulate deleted/overwritten entries that need to be cleaned up periodically.

Compaction is non-blocking: reads can proceed while compaction is in progress since Rift's architecture supports concurrent reads.

Usage:

final compactor = BackgroundCompactor(
  {'users': usersBox, 'settings': settingsBox},
  interval: Duration(minutes: 10),
);

compactor.start();

// Listen for compaction events
compactor.events.listen((event) {
  print('${event.boxName} compacted in ${event.duration.inMilliseconds}ms');
});

// Stop when done
compactor.stop();

Constructors

BackgroundCompactor(Map<String, Box> _boxes, {Duration interval = const Duration(minutes: 5)})
Create a BackgroundCompactor for the given boxes.

Properties

compactionCount int
The total number of compactions performed.
no setter
events Stream<CompactionEvent>
Stream of compaction events.
no setter
hashCode int
The hash code for this object.
no setterinherited
interval Duration
The current compaction interval.
no setter
isRunning bool
Whether the compactor is currently running.
no setter
registeredBoxNames Iterable<String>
Get the names of all registered boxes.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

compactAll() Future<void>
Compact all registered boxes.
compactBox(String boxName) Future<void>
Compact a specific box by boxName.
dispose() → void
Dispose of the compactor, stopping the timer and closing the event stream.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerBox(String name, Box box) → void
Register an additional box for compaction.
start() → void
Start automatic background compaction.
stop() → void
Stop automatic compaction.
toString() String
A string representation of this object.
inherited
unregisterBox(String name) → void
Unregister a box from compaction.
updateInterval(Duration newInterval) → void
Update the compaction interval.

Operators

operator ==(Object other) bool
The equality operator.
inherited