Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Service Client

The ServiceClient API allows a Rust application to call eCAL services, either generically or per-instance.

Connecting to a Service

#![allow(unused)]
fn main() {
use rustecal::service::client::ServiceClient;

let client = ServiceClient::new("mirror")?;
}

Calling Methods

#![allow(unused)]
fn main() {
use rustecal::service::types::ServiceRequest;

let request = ServiceRequest {
    payload: b"stressed".to_vec(),
};
}

To broadcast call all connected instances:

#![allow(unused)]
fn main() {
let responses = client.call("echo", request, Some(1000));
}

To call (and filter) all connected instances separately:

#![allow(unused)]
fn main() {
for instance in client.get_client_instances() {
    let response = instance.call("reverse", request.clone(), Some(1000));
}
}

Return Handling

#![allow(unused)]
fn main() {
match response {
    Some(res) if res.success => {
        println!("Response: {}", String::from_utf8_lossy(&res.payload));
    }
    Some(res) => {
        println!("Error: {}", res.error_msg.unwrap_or("Unknown error".into()));
    }
    None => {
        println!("No response or timeout.");
    }
}
}

Runtime Compatibility

This API is fully compatible with the C++ mirror_client.cpp, the C mirror_client_c.c and the C# mirror_client_csharp.cs example.