Skip to main content

KoiHandle

Struct KoiHandle 

Source
pub struct KoiHandle { /* private fields */ }

Implementations§

Source§

impl KoiHandle

Source

pub fn events(&self) -> BroadcastStream<KoiEvent>

Source

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.

Source

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.

Source

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.

Source

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”):

  1. acquire/maintain this node’s identity (best-effort — an Open node with no way to enroll simply stays plaintext),
  2. announce service_type on the LAN at addr’s port with the node’s posture stamped into the TXT, kept current across posture flips, and
  3. serve router on addr with 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.

Source

pub fn subscribe(&self) -> Receiver<KoiEvent>

Source

pub fn mdns(&self) -> Result<MdnsHandle, KoiError>

Source

pub fn dns(&self) -> Result<DnsHandle, KoiError>

Source

pub fn health(&self) -> Result<HealthHandle, KoiError>

Source

pub fn certmesh(&self) -> Result<CertmeshHandle, KoiError>

Source

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.

Source

pub fn proxy(&self) -> Result<ProxyHandle, KoiError>

Source

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).

Source

pub fn runtime(&self) -> Result<Arc<RuntimeCore>, KoiError>

Get the runtime adapter core.

Only available in embedded mode when runtime is enabled.

Source

pub async fn shutdown(self) -> Result<(), KoiError>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more