Queryable.declare constructor
Queryable.declare(})
Creates a queryable on the given session and key expression.
This is called internally by Session.declareQueryable.
Implementation
factory Queryable.declare(
Pointer<Void> loanedSession,
Pointer<Void> loanedKeyExpr,
String keyExprStr, {
bool complete = false,
Locality? allowedOrigin,
}) {
final size = bindings.zd_queryable_sizeof();
final ptr = calloc.allocate<Void>(size);
final channel = QueryChannel.create();
final rc = bindings.zd_declare_queryable(
ptr.cast(),
loanedSession.cast(),
loanedKeyExpr.cast(),
channel.receivePort.sendPort.nativePort,
complete ? 1 : 0,
allowedOrigin?.value ?? -1,
);
if (rc != 0) {
channel.abandon();
calloc.free(ptr);
throw ZenohException('Failed to declare queryable', rc);
}
return Queryable._(ptr, channel, keyExprStr);
}