Context constructor

Context(
  1. Clock clock,
  2. ContextConfig config,
  3. Completer<ContextData> dataFuture,
  4. ContextDataProvider dataProvider,
  5. ContextEventHandler eventHandler,
  6. VariableParser variableParser,
  7. AudienceMatcher audienceMatcher,
  8. ContextEventLogger? eventLogger,
)

Implementation

Context(
    Clock clock,
    ContextConfig config,
    Completer<ContextData> dataFuture,
    ContextDataProvider dataProvider,
    ContextEventHandler eventHandler,
    VariableParser variableParser,
    AudienceMatcher audienceMatcher,
    ContextEventLogger? eventLogger) {
  clock_ = clock;

  publishDelay_ = config.getPublishDelay();
  refreshInterval_ = config.getRefreshInterval();
  eventHandler_ = eventHandler;
  dataProvider_ = dataProvider;
  variableParser_ = variableParser;
  audienceMatcher_ = audienceMatcher;
  eventLogger_ = eventLogger;

  setUnits(config.getUnits());
  setAttributes(config.getAttributes());
  setOverrides(config.getOverrides());
  setCustomAssignments(config.getCustomAssignments());

  readyFuture_ = Completer<void>();
  dataFuture.future.then((data) {
    setData(data);
    readyFuture_!.complete();
    readyFuture_ = null;

    logEvent(EventType.ready, data);

    if (getPendingCount() > 0) {
      setTimeout();
    }
  }).catchError((exception) {
    setDataFailed(exception);
    readyFuture_!.complete();
    readyFuture_ = null;
    logError(exception);
  });
}