SubscriptionManager constructor

SubscriptionManager(
  1. SpacetimeDbConnection _connection, {
  2. OfflineStorage? offlineStorage,
  3. OfflineQueuePolicy queuePolicy = const OfflineQueuePolicy(),
  4. bool retainRowsOnUnsubscribe = false,
})

Implementation

SubscriptionManager(
  this._connection, {
  OfflineStorage? offlineStorage,
  OfflineQueuePolicy queuePolicy = const OfflineQueuePolicy(),
  bool retainRowsOnUnsubscribe = false,
}) : _retainRowsOnUnsubscribe = retainRowsOnUnsubscribe {
  _optimisticState = OptimisticStateManager(cache);

  if (offlineStorage != null) {
    late ReducerCaller caller;
    _mutationSyncer = MutationSyncer(
      connection: _connection,
      storage: offlineStorage,
      optimisticState: _optimisticState,
      cache: cache,
      send:
          (name, args, {requestId}) =>
              caller.callWithBytes(name, args, requestId: requestId),
      policy: queuePolicy,
    );
    caller = ReducerCaller(
      _connection,
      offlineStorage: offlineStorage,
      mutationHandler: _mutationSyncer,
      policy: queuePolicy,
    );
    reducers = caller;
  } else {
    reducers = ReducerCaller(_connection);
  }

  if (_retainRowsOnUnsubscribe) {
    _mutationSyncer?.querySetTagResolver = _tagForQuerySetId;
  }

  _startListening();
  _startConnectionMonitoring();
}