pub struct NodeCalls { /* private fields */ }Expand description
Shared by the door and the node-mail wake; the restream bridge signals presence here.
Implementations§
Source§impl NodeCalls
impl NodeCalls
pub fn new( node_id: String, keys: Option<UpstreamKeys>, legacy: Option<(SocketAddr, Arc<NodeIdentity>)>, config_http: Option<(SocketAddr, Arc<NodeIdentity>)>, ) -> Self
Sourcepub async fn set_uplink(&self, uplink: Option<Arc<NodeUplink>>)
pub async fn set_uplink(&self, uplink: Option<Arc<NodeUplink>>)
Bridge (re)connect: refresh product URL. Mail TCP is maintained separately
by Self::spawn_mail_uplink so PTY and mail do not share fate.
Sourcepub fn spawn_mail_uplink(
&self,
addr: SocketAddr,
keys: UpstreamKeys,
journal: Option<Arc<UplinkJournal>>,
shutdown: Receiver<bool>,
)
pub fn spawn_mail_uplink( &self, addr: SocketAddr, keys: UpstreamKeys, journal: Option<Arc<UplinkJournal>>, shutdown: Receiver<bool>, )
Keep a dedicated TCP + ch2 Noise session open for node-calls. Reconnects with exponential backoff (5s → 30s) independently of the g4a bridge.
Sourcepub async fn refresh_product_url(&self) -> bool
pub async fn refresh_product_url(&self) -> bool
Ask C2 for its public config over enroll HTTP and stash m4a_product_url.
Sourcepub async fn refresh_product_url_retrying(&self)
pub async fn refresh_product_url_retrying(&self)
Self::refresh_product_url with retries (5s doubling to 5 min) until C2 answers.
Sourcepub fn spawn_rekey_watch(&self, shutdown: Receiver<bool>)
pub fn spawn_rekey_watch(&self, shutdown: Receiver<bool>)
The node-call channel only reads downlink while a call waits for its reply, so a core restart (core then holds no keys and asks for a re-handshake) went unnoticed until the next call failed. Check the idle channel every few seconds and re-handshake as soon as core asks.
pub async fn call(&self, op: &str, payload: &Value) -> Result<Value, CallError>
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for NodeCalls
impl !UnwindSafe for NodeCalls
impl Freeze for NodeCalls
impl Send for NodeCalls
impl Sync for NodeCalls
impl Unpin for NodeCalls
impl UnsafeUnpin for NodeCalls
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