pub struct Client { /* private fields */ }Expand description
Session against one deployed relay.
The credential is per-client, not process-global. Two clients in the same process may use different keys.
Implementations§
Source§impl Client
impl Client
pub fn new(config: ClientConfig) -> Result<Client, Error>
Sourcepub fn from_credential(
server: impl Into<String>,
credential: Credential,
keep_alive: bool,
namespace: Option<u64>,
) -> Client
pub fn from_credential( server: impl Into<String>, credential: Credential, keep_alive: bool, namespace: Option<u64>, ) -> Client
Build a client from an already-parsed credential.
Sourcepub fn with_relay_transport(
&self,
transport: RelayTransport,
) -> Result<Client, Error>
pub fn with_relay_transport( &self, transport: RelayTransport, ) -> Result<Client, Error>
Select the relay carrier for subsequent work. Existing handles retain their carrier. TCP remains the default. QUIC requires the relay-quic feature and a QUIC-enabled relay.
pub fn relay_transport(&self) -> RelayTransport
Sourcepub async fn relay_diagnostics(&self) -> RelayDiagnostics
pub async fn relay_diagnostics(&self) -> RelayDiagnostics
Sample current QUIC counters without a background observer or per-packet work. Clients of the same relay and carrier in this process share one pool.
Sourcepub async fn relay_quic_port(&self) -> Result<Option<u16>, Error>
pub async fn relay_quic_port(&self) -> Result<Option<u16>, Error>
The UDP port the relay offers QUIC on, or None when it offers none:
one started without a QUIC listener, or one from before QUIC. Asked
over TCP whatever this client’s carrier, so a TCP client can learn
whether QUIC would work before switching to it.
Sourcepub fn notify_network_change(&self)
pub fn notify_network_change(&self)
Notify workers after a host network/resume event. This does not mark services healthy.
pub fn server(&self) -> &str
pub fn namespace(&self) -> Option<u64>
Sourcepub fn admin(&self) -> Result<Admin, Error>
pub fn admin(&self) -> Result<Admin, Error>
Administrator RPCs. Fails locally when the session is not an admin key.
Sourcepub async fn register(
&self,
request: RegisterRequest,
) -> Result<Registration, Error>
pub async fn register( &self, request: RegisterRequest, ) -> Result<Registration, Error>
Publish a local service on the relay under request.key, with
RegisterOptions::default: direct sessions are allowed when the SDK
is built with p2p.
Returns as soon as the worker is spawned; the handle’s
Registration::wait_ready is what waits for the relay to accept it.
Sourcepub async fn register_with_idle_timeout(
&self,
request: RegisterRequest,
idle_timeout: Duration,
) -> Result<Registration, Error>
pub async fn register_with_idle_timeout( &self, request: RegisterRequest, idle_timeout: Duration, ) -> Result<Registration, Error>
Publish with an idle deadline for each forwarded TCP data connection.
Traffic in either direction resets the deadline; control connections and other registrations are unaffected. Zero disables the idle deadline. UDP requests are rejected because datagram lifetime has a separate policy. Durations that cannot be represented as a timer deadline are rejected.
Sourcepub async fn register_with_options(
&self,
request: RegisterRequest,
options: RegisterOptions,
) -> Result<Registration, Error>
pub async fn register_with_options( &self, request: RegisterRequest, options: RegisterOptions, ) -> Result<Registration, Error>
Publish a service with explicit options, such as
allow_direct: false to keep every session on the relay.
Sourcepub async fn connect(
&self,
request: ConnectRequest,
) -> Result<Connection, Error>
pub async fn connect( &self, request: ConnectRequest, ) -> Result<Connection, Error>
Subscribe to a registered service and forward it from a local listener,
with ConnectOptions::default: direct first with relay fallback when
the SDK is built with p2p.
Returns as soon as the worker is spawned; the handle’s
Connection::wait_ready is what waits for the local listener to bind
and the relay to confirm the service.
Sourcepub async fn connect_with_options(
&self,
request: ConnectRequest,
options: ConnectOptions,
) -> Result<Connection, Error>
pub async fn connect_with_options( &self, request: ConnectRequest, options: ConnectOptions, ) -> Result<Connection, Error>
Select direct-first or the relay-only protocol for this tunnel only.
Sourcepub async fn list_keys(&self) -> Result<Vec<String>, Error>
pub async fn list_keys(&self) -> Result<Vec<String>, Error>
Service keys visible to this credential’s namespace.
Sourcepub async fn sessions(&self) -> Result<Vec<SessionObservation>, Error>
pub async fn sessions(&self) -> Result<Vec<SessionObservation>, Error>
Endpoint observations; stale or conflicting reports do not control sessions.
pub async fn service_status( &self, key: impl Into<String>, ) -> Result<Vec<ServiceConnection>, Error>
pub async fn remote_id(&self) -> Result<RemoteId, Error>
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Client
impl !UnwindSafe for Client
impl Freeze for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl UnsafeUnpin for Client
Blanket Implementations§
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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