use crate::error::XrceError;
use crate::submessages::Message;
pub trait XrceTlsStream {
fn send_message(&mut self, msg: &Message) -> Result<(), XrceError>;
fn recv_message(&mut self) -> Result<Message, XrceError>;
fn close(&mut self) -> Result<(), XrceError>;
}
#[derive(Debug, Default)]
pub struct XrceTlsClient {
pub server_name: alloc::string::String,
}
#[cfg(feature = "alloc")]
extern crate alloc;
impl XrceTlsClient {
#[must_use]
pub fn new(server_name: alloc::string::String) -> Self {
Self { server_name }
}
pub fn connect(&self) -> Result<(), XrceError> {
Err(XrceError::ValueOutOfRange {
message: "tls connect: no engine plugged (C6.2.D skeleton)",
})
}
}
#[derive(Debug, Default)]
pub struct XrceTlsServer;
impl XrceTlsServer {
#[must_use]
pub fn new() -> Self {
Self
}
pub fn bind(&self) -> Result<(), XrceError> {
Err(XrceError::ValueOutOfRange {
message: "tls bind: no engine plugged (C6.2.D skeleton)",
})
}
}
#[cfg(test)]
mod tests {
#![allow(clippy::expect_used, clippy::unwrap_used)]
use super::*;
#[test]
fn tls_client_new_stores_server_name() {
let c = XrceTlsClient::new("agent.example.invalid".into());
assert_eq!(c.server_name, "agent.example.invalid");
}
#[test]
fn tls_client_connect_returns_skeleton_error() {
let c = XrceTlsClient::new("x".into());
let res = c.connect();
assert!(matches!(res, Err(XrceError::ValueOutOfRange { .. })));
}
#[test]
fn tls_server_bind_returns_skeleton_error() {
let s = XrceTlsServer::new();
let res = s.bind();
assert!(matches!(res, Err(XrceError::ValueOutOfRange { .. })));
}
#[test]
fn tls_server_default_constructible() {
let _ = XrceTlsServer;
}
}