pub mod status;
pub use status::{LkStatus,lk_status_poll,lk_status_set};
use anyhow::Context;
use linkspace_common::prelude::EXCHANGE_DOMAIN;
use super::*;
pub fn lk_pull(lk: &Linkspace, query: &Query) -> LkResult<LkHash> {
let req = lk_pull_req(query)?;
lk_save(lk, &req)?;
Ok(req.hash())
}
#[doc(hidden)]
pub fn lk_pull_req(query: &Query ) -> LkResult<NetPktBox> {
let group: GroupID = query
.0
.predicates
.group
.as_eq()
.context("requires exact group predicate")?
.into();
let domain: Domain = query
.0
.predicates
.domain
.as_eq()
.context("requires exact domain predicate")?
.into();
let id = query.0.id().transpose()?.context("missing :id option")?;
let data = query.0.to_string();
tracing::trace!(data);
let pull_path = ipath_buf(&[b"pull", &*group, &*domain, &id]);
let pkt = lk_linkpoint(
EXCHANGE_DOMAIN,
PRIVATE,
&pull_path,
&[],
data.as_bytes(),
None,
)?;
Ok(pkt.as_netbox())
}