pub struct KoiHandle { /* private fields */ }Implementations§
Source§impl KoiHandle
impl KoiHandle
pub fn events(&self) -> BroadcastStream<KoiEvent>
Sourcepub fn http_addr(&self) -> Option<SocketAddr>
pub fn http_addr(&self) -> Option<SocketAddr>
The address the embedded HTTP adapter bound to, or None when HTTP is
disabled or this is a remote handle. With Builder::http_port(0) this
reports the OS-assigned ephemeral port — the supported way to run an
embedded HTTP surface on a free port without racing to pick one.
Sourcepub fn bound_http_port(&self) -> Option<u16>
pub fn bound_http_port(&self) -> Option<u16>
The port the embedded HTTP adapter bound to (convenience over
http_addr). None if HTTP is disabled / remote.
Sourcepub fn serve(
&self,
router: Router,
addr: SocketAddr,
cancel: CancellationToken,
) -> Result<JoinHandle<()>, KoiError>
pub fn serve( &self, router: Router, addr: SocketAddr, cancel: CancellationToken, ) -> Result<JoinHandle<()>, KoiError>
Serve router on addr with the same-port posture dial (ADR-020 §5):
plain HTTP while this node is Open, mTLS once it is secure, flipping live
with no dropped connections as the posture changes. The consumer writes
one serve call and never branches on posture.
Returns the supervisor’s JoinHandle; the listener stops when this
handle’s cancel is triggered (e.g. on shutdown) or
the passed cancel fires. Embedded only — a remote handle has no local
identity to serve mTLS with.
Sourcepub async fn participate(
&self,
router: Router,
addr: SocketAddr,
service_type: &str,
cancel: CancellationToken,
) -> Result<JoinHandle<()>, KoiError>
pub async fn participate( &self, router: Router, addr: SocketAddr, service_type: &str, cancel: CancellationToken, ) -> Result<JoinHandle<()>, KoiError>
Become a fully-participating trusted service in one call (ADR-020 §13 — the “3-line trusted service”):
- acquire/maintain this node’s identity (best-effort — an Open node with no way to enroll simply stays plaintext),
- announce
service_typeon the LAN ataddr’s port with the node’s posture stamped into the TXT, kept current across posture flips, and - serve
routeronaddrwith the same-port dial (serve).
The consumer never branches on posture and never wires identity, discovery,
and serving separately. Returns the serve supervisor’s JoinHandle.
Certificate renewal is handled by the certmesh background loops — enable
them with Builder::certmesh_background(true) on a long-running host.
Embedded only.
pub fn subscribe(&self) -> Receiver<KoiEvent>
pub fn mdns(&self) -> Result<MdnsHandle, KoiError>
pub fn dns(&self) -> Result<DnsHandle, KoiError>
pub fn health(&self) -> Result<HealthHandle, KoiError>
pub fn certmesh(&self) -> Result<CertmeshHandle, KoiError>
Sourcepub fn vault(&self) -> Result<Vault, KoiError>
pub fn vault(&self) -> Result<Vault, KoiError>
Open the encrypted key-value vault for general-purpose secret storage.
The vault uses platform credential binding (keyring) when available, with a machine-bound fallback. Each call opens a fresh handle sharing the same on-disk state.
pub fn proxy(&self) -> Result<ProxyHandle, KoiError>
Sourcepub fn udp(&self) -> Result<Arc<UdpRuntime>, KoiError>
pub fn udp(&self) -> Result<Arc<UdpRuntime>, KoiError>
Get the UDP runtime handle.
Only available in embedded mode — remote mode does not support UDP bridging (the remote daemon itself handles bindings).
Sourcepub fn runtime(&self) -> Result<Arc<RuntimeCore>, KoiError>
pub fn runtime(&self) -> Result<Arc<RuntimeCore>, KoiError>
Get the runtime adapter core.
Only available in embedded mode when runtime is enabled.
pub async fn shutdown(self) -> Result<(), KoiError>
Auto Trait Implementations§
impl !RefUnwindSafe for KoiHandle
impl !UnwindSafe for KoiHandle
impl Freeze for KoiHandle
impl Send for KoiHandle
impl Sync for KoiHandle
impl Unpin for KoiHandle
impl UnsafeUnpin for KoiHandle
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more