pub struct TestNode { /* private fields */ }Expand description
Implementations§
Methods from Deref<Target = 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 fn try_serve(
&self,
router: Router,
addr: SocketAddr,
cancel: CancellationToken,
) -> Result<JoinHandle<Result<(), Error>>, KoiError>
pub fn try_serve( &self, router: Router, addr: SocketAddr, cancel: CancellationToken, ) -> Result<JoinHandle<Result<(), Error>>, KoiError>
Like serve but returns the bind error instead of swallowing
it (wishlist 5.1). The caller learns immediately if the listener never came
up, without polling bound_http_port() or waiting for a timeout.
The Err is an io::Error from TcpListener::bind. On success the returned
JoinHandle resolves when the listener exits.
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>
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for TestNode
impl !UnwindSafe for TestNode
impl Freeze for TestNode
impl Send for TestNode
impl Sync for TestNode
impl Unpin for TestNode
impl UnsafeUnpin for TestNode
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