declareAdvancedPublisher method

AdvancedPublisher declareAdvancedPublisher(
  1. String keyExpr, {
  2. AdvancedPublisherOptions? options,
})

Declares an advanced publisher on the given keyExpr.

Returns an AdvancedPublisher with optional cache, publisher detection, and sample miss detection capabilities. Call AdvancedPublisher.close when done.

Throws ZenohException if the key expression is invalid. Throws StateError if the session has been closed.

Implementation

AdvancedPublisher declareAdvancedPublisher(
  String keyExpr, {
  AdvancedPublisherOptions? options,
}) {
  _ensureOpen();
  final opts = options ?? const AdvancedPublisherOptions();
  final ke = KeyExpr(keyExpr);
  try {
    final loanedSession =
        bindings.zd_session_loan(_ptr.cast()) as Pointer<Void>;
    final loanedKe =
        bindings.zd_view_keyexpr_loan(ke.nativePtr.cast()) as Pointer<Void>;
    return AdvancedPublisher.declare(
      loanedSession,
      loanedKe,
      keyExpr,
      enableCache: opts.cacheMaxSamples != null,
      cacheMaxSamples: opts.cacheMaxSamples ?? 0,
      publisherDetection: opts.publisherDetection,
      sampleMissDetection: opts.sampleMissDetection,
      heartbeatMode: opts.heartbeatMode,
      heartbeatPeriodMs: opts.heartbeatPeriodMs,
    );
  } finally {
    ke.dispose();
  }
}