close method

Future<void> close()

Implementation

Future<void> close() async {
  if (!closed_) {
    if (closing_ == false) {
      closing_ = true;
      clearRefreshTimer();

      if (pendingCount_ > 0) {
        closingFuture_ = Completer<void>();

        flush().then((_) {
          closed_ = true;
          closing_ = false;
          closingFuture_!.complete();
          logEvent(EventType.close, null);
        }).catchError((exception) {
          closed_ = true;
          closing_ = false;
          closingFuture_!.completeError(exception);
          // event logger gets this error during publish
        });

        return closingFuture_!.future;
      } else {
        closed_ = true;
        closing_ = false;
        logEvent(EventType.close, null);
      }
    }

    if (closingFuture_ != null) {
      return closingFuture_!.future;
    }
  }

  return Future.value();
}