lxmf-sdk 0.7.0

High-level Rust SDK for LXMF clients and RPC-backed LXMF workflows.
Documentation
use super::{code, ErrorCategory, SdkError, ZmqPipelineBackendClient};
use crate::domain::{PeerConnectionRequest, PeerConnectionResult};

impl ZmqPipelineBackendClient {
    pub fn peer_connect(
        &self,
        req: PeerConnectionRequest,
    ) -> Result<PeerConnectionResult, SdkError> {
        self.peer_lifecycle_call("sdk_peer_connect_v2", req, "peer_connect response")
    }

    pub fn peer_disconnect(
        &self,
        req: PeerConnectionRequest,
    ) -> Result<PeerConnectionResult, SdkError> {
        self.peer_lifecycle_call("sdk_peer_disconnect_v2", req, "peer_disconnect response")
    }

    pub fn peer_reconnect(
        &self,
        req: PeerConnectionRequest,
    ) -> Result<PeerConnectionResult, SdkError> {
        self.peer_lifecycle_call("sdk_peer_reconnect_v2", req, "peer_reconnect response")
    }

    fn peer_lifecycle_call(
        &self,
        method: &str,
        req: PeerConnectionRequest,
        context: &str,
    ) -> Result<PeerConnectionResult, SdkError> {
        let params = serde_json::to_value(req).map_err(|err| {
            SdkError::new(code::INTERNAL, ErrorCategory::Internal, err.to_string())
        })?;
        let result = self.call_rpc(method, Some(params))?;
        Self::decode_field_or_root(&result, "peer", context)
    }
}