pub struct MessageFactory;
Expand description
Message factory for creating messages dynamically based on type name
This factory allows receiving and decoding messages without knowing the type at compile time. The message type is determined from the header’s type_name field.
§Examples
let factory = MessageFactory::new();
let message = factory.decode_any(&header, body, true)?;
println!("Received {} message", message.message_type());
Implementations§
Source§impl MessageFactory
impl MessageFactory
Sourcepub fn decode_any(
&self,
header: &Header,
body: &[u8],
verify_crc: bool,
) -> Result<AnyMessage>
pub fn decode_any( &self, header: &Header, body: &[u8], verify_crc: bool, ) -> Result<AnyMessage>
Decode a message from header and body bytes
§Arguments
header
- Parsed message headerbody
- Raw body bytes (may include extended header, content, and metadata)verify_crc
- Whether to verify CRC checksum
§Returns
AnyMessage
containing the decoded message, or AnyMessage::Unknown
if the
message type is not recognized.
§Examples
let factory = MessageFactory::new();
let message = factory.decode_any(&header, body, true)?;
match message {
openigtlink_rust::protocol::AnyMessage::Transform(msg) => {
println!("Transform from {}", msg.header.device_name.as_str()?);
}
openigtlink_rust::protocol::AnyMessage::Unknown { .. } => {
println!("Unknown message type");
}
_ => {}
}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MessageFactory
impl RefUnwindSafe for MessageFactory
impl Send for MessageFactory
impl Sync for MessageFactory
impl Unpin for MessageFactory
impl UnwindSafe for MessageFactory
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