StatefulService<S> class
abstract
A base class for representing a stateful service.
The service state is available through the values value stream but the only way to update it is by returning/ yielding new values from the provided callbacks. This allows us to serialize all state changes and reduce the risk of race conditions.
- Implementers
Constructors
-
StatefulService({required S initialState, String? name, Logger? logger, FutureOr<
S> init(S)?, StatefulServiceCache<S> ? cache, bool cacheValidator(S)?, bool shouldStateBeEmitted(S previousState, S newState)?, bool verboseLogging = false}) -
Creates a new StatefulService with the provided
initialState.
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
-
initComplete
↔ Future<
S> -
A Future that completes when the service has finished initializing. It will contain the state's first emitted
state.
latefinal
- isClosed → bool
-
Returns true if this service has been closed. If this returns true, all calls to update the service's state will
fail.
no setter
- isInitializing → bool
-
no setter
- isUpdating → bool
-
Returns true if this service is currently processing an update call.
no setter
- name → String
-
The provided name of this service, or the runtime type if none was provided.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
state
→ ServiceState<
S> -
The service's current state.
no setter
-
states
→ Stream<
ServiceState< S> > -
This stream emits the service's state whenever it changes, it will never emit errors.
no setter
-
values
→ Stream<
S> -
This stream emits the service's state whenever it changes, it will never emit errors.
no setter
- verboseLogging → bool
-
final
Methods
-
clearCache(
) → Future< void> - Clears this service's state cache. Note that this will not affect the current state of the service.
-
close(
) → Future< void> - Closes the service. Any in-flight update operations will be discarded and further calls to update the service state will result in errors.
-
listen(
void onData(ServiceState< S> value)) → StreamSubscription<ServiceState< S> > -
Listens to the state stream and calls
onDatawhenever a new state is emitted. -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
set(
S value, {bool ignoreConcurrentUpdates = false}) → Future< void> - Sets the service's state to the provided value directly, without needing changing the service into an intermediate loading state.
-
streamUpdates(
Stream< S> updates(S state, S setSavePoint(S)), {bool ignoreConcurrentUpdates = false}) → Future<void> -
Performs a series of updates of service's state with the values emitted from the stream returned by
updates. The service state will be locked (no other updates can take place) until the stream completes. update receives two arguments; the service's current state, and a function to call to save the current state as a savepoint. -
toString(
) → String -
A string representation of this object.
inherited
-
update(
FutureOr< S> update(S state), {bool ignoreConcurrentUpdates = false}) → Future<void> -
Makes a single update to this service's state with the value returned from
update.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited