pub struct Request { /* private fields */ }Expand description
Blocking analogue of core::Request. Every method mirrors the
async one without the .await. The hidden current-thread runtime
runs the await internally.
Request is !Sync because the Runtime it owns is; clone one
via new per thread that needs independent blocking
access, or use the async API if you need Sync.
Implementations§
Source§impl Request
impl Request
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Create a new handle. Spawns the async driver thread and allocates a single-threaded tokio runtime to drive its futures to completion.
Sourcepub fn connect_to(url: &str, opts: ConnectionOptions) -> Result<Self>
pub fn connect_to(url: &str, opts: ConnectionOptions) -> Result<Self>
Construct + connect in one call.
use motorcortex_rust::{ConnectionOptions, blocking::Request};
let opts = ConnectionOptions::new("mcx.cert.crt".into(), 1000, 1000);
let req = Request::connect_to("wss://127.0.0.1:5568", opts)?;
req.request_parameter_tree()?;
let v: f64 = req.get_parameter("root/Control/dummyDouble")?;
println!("{v}");Examples found in repository?
examples/blocking_request.rs (line 27)
15fn main() -> Result<()> {
16 let mut args = env::args().skip(1);
17 let url = args.next().unwrap_or_else(|| "wss://127.0.0.1:5568:5567".into());
18 let cert = args.next().unwrap_or_else(|| "tests/mcx.cert.crt".into());
19 let user = args.next().unwrap_or_else(|| "root".into());
20 let pass = args.next().unwrap_or_default();
21 let path = args
22 .next()
23 .unwrap_or_else(|| "root/Control/dummyDouble".into());
24
25 let (req_url, _sub_url) = parse_url(&url)?;
26 let opts = ConnectionOptions::new(cert, 5_000, 5_000);
27 let req = Request::connect_to(&req_url, opts)?;
28 req.login(&user, &pass)?;
29 req.request_parameter_tree()?;
30
31 let value: f64 = req.get_parameter(&path)?;
32 println!("{path} = {value}");
33
34 req.disconnect()?;
35 Ok(())
36}pub fn connect(&self, url: &str, opts: ConnectionOptions) -> Result<()>
Sourcepub fn disconnect(&self) -> Result<()>
pub fn disconnect(&self) -> Result<()>
Examples found in repository?
examples/blocking_request.rs (line 34)
15fn main() -> Result<()> {
16 let mut args = env::args().skip(1);
17 let url = args.next().unwrap_or_else(|| "wss://127.0.0.1:5568:5567".into());
18 let cert = args.next().unwrap_or_else(|| "tests/mcx.cert.crt".into());
19 let user = args.next().unwrap_or_else(|| "root".into());
20 let pass = args.next().unwrap_or_default();
21 let path = args
22 .next()
23 .unwrap_or_else(|| "root/Control/dummyDouble".into());
24
25 let (req_url, _sub_url) = parse_url(&url)?;
26 let opts = ConnectionOptions::new(cert, 5_000, 5_000);
27 let req = Request::connect_to(&req_url, opts)?;
28 req.login(&user, &pass)?;
29 req.request_parameter_tree()?;
30
31 let value: f64 = req.get_parameter(&path)?;
32 println!("{path} = {value}");
33
34 req.disconnect()?;
35 Ok(())
36}Sourcepub fn login(&self, user: &str, pass: &str) -> Result<StatusCode>
pub fn login(&self, user: &str, pass: &str) -> Result<StatusCode>
Examples found in repository?
examples/blocking_request.rs (line 28)
15fn main() -> Result<()> {
16 let mut args = env::args().skip(1);
17 let url = args.next().unwrap_or_else(|| "wss://127.0.0.1:5568:5567".into());
18 let cert = args.next().unwrap_or_else(|| "tests/mcx.cert.crt".into());
19 let user = args.next().unwrap_or_else(|| "root".into());
20 let pass = args.next().unwrap_or_default();
21 let path = args
22 .next()
23 .unwrap_or_else(|| "root/Control/dummyDouble".into());
24
25 let (req_url, _sub_url) = parse_url(&url)?;
26 let opts = ConnectionOptions::new(cert, 5_000, 5_000);
27 let req = Request::connect_to(&req_url, opts)?;
28 req.login(&user, &pass)?;
29 req.request_parameter_tree()?;
30
31 let value: f64 = req.get_parameter(&path)?;
32 println!("{path} = {value}");
33
34 req.disconnect()?;
35 Ok(())
36}pub fn logout(&self) -> Result<StatusCode>
Sourcepub fn request_parameter_tree(&self) -> Result<StatusCode>
pub fn request_parameter_tree(&self) -> Result<StatusCode>
Examples found in repository?
examples/blocking_request.rs (line 29)
15fn main() -> Result<()> {
16 let mut args = env::args().skip(1);
17 let url = args.next().unwrap_or_else(|| "wss://127.0.0.1:5568:5567".into());
18 let cert = args.next().unwrap_or_else(|| "tests/mcx.cert.crt".into());
19 let user = args.next().unwrap_or_else(|| "root".into());
20 let pass = args.next().unwrap_or_default();
21 let path = args
22 .next()
23 .unwrap_or_else(|| "root/Control/dummyDouble".into());
24
25 let (req_url, _sub_url) = parse_url(&url)?;
26 let opts = ConnectionOptions::new(cert, 5_000, 5_000);
27 let req = Request::connect_to(&req_url, opts)?;
28 req.login(&user, &pass)?;
29 req.request_parameter_tree()?;
30
31 let value: f64 = req.get_parameter(&path)?;
32 println!("{path} = {value}");
33
34 req.disconnect()?;
35 Ok(())
36}pub fn get_parameter_tree_hash(&self) -> Result<u32>
Sourcepub fn get_parameter<V>(&self, path: &str) -> Result<V>where
V: GetParameterValue + Default,
pub fn get_parameter<V>(&self, path: &str) -> Result<V>where
V: GetParameterValue + Default,
Examples found in repository?
examples/blocking_request.rs (line 31)
15fn main() -> Result<()> {
16 let mut args = env::args().skip(1);
17 let url = args.next().unwrap_or_else(|| "wss://127.0.0.1:5568:5567".into());
18 let cert = args.next().unwrap_or_else(|| "tests/mcx.cert.crt".into());
19 let user = args.next().unwrap_or_else(|| "root".into());
20 let pass = args.next().unwrap_or_default();
21 let path = args
22 .next()
23 .unwrap_or_else(|| "root/Control/dummyDouble".into());
24
25 let (req_url, _sub_url) = parse_url(&url)?;
26 let opts = ConnectionOptions::new(cert, 5_000, 5_000);
27 let req = Request::connect_to(&req_url, opts)?;
28 req.login(&user, &pass)?;
29 req.request_parameter_tree()?;
30
31 let value: f64 = req.get_parameter(&path)?;
32 println!("{path} = {value}");
33
34 req.disconnect()?;
35 Ok(())
36}pub fn set_parameter<V>(&self, path: &str, value: V) -> Result<StatusCode>where
V: SetParameterValue,
pub fn get_parameters<T>(&self, paths: &[&str]) -> Result<T>where
T: GetParameterTuple,
pub fn set_parameters<T>(&self, paths: &[&str], values: T) -> Result<StatusCode>where
T: SetParameterTuple,
pub fn create_group<I>(
&self,
paths: I,
alias: &str,
fdiv: u32,
) -> Result<GroupStatusMsg>where
I: Parameters,
pub fn remove_group(&self, alias: &str) -> Result<StatusCode>
Sourcepub fn parameter_tree(&self) -> Arc<RwLock<ParameterTree>>
pub fn parameter_tree(&self) -> Arc<RwLock<ParameterTree>>
Shared parameter-tree cache. Populated by
request_parameter_tree.
Auto Trait Implementations§
impl Freeze for Request
impl RefUnwindSafe for Request
impl Send for Request
impl Sync for Request
impl Unpin for Request
impl UnsafeUnpin for Request
impl UnwindSafe for Request
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
Mutably borrows from an owned value. Read more