pub trait PayloadWireFormat:
Debug
+ Send
+ Sized
+ Sync {
type SdHeader: WireFormat + Clone + Debug + Eq;
// Required methods
fn message_id(&self) -> MessageId;
fn as_sd_header(&self) -> Option<&Self::SdHeader>;
fn from_payload_bytes(
message_id: MessageId,
payload: &[u8],
) -> Result<Self, Error>;
fn new_sd_payload(header: &Self::SdHeader) -> Self;
fn sd_flags(&self) -> Option<Flags>;
fn required_size(&self) -> usize;
fn encode<T: Write>(&self, writer: &mut T) -> Result<usize, Error>;
fn new_subscription_sd_header(
service_id: u16,
instance_id: u16,
major_version: u8,
ttl: u32,
event_group_id: u16,
client_ip: Ipv4Addr,
protocol: TransportProtocol,
client_port: u16,
reboot_flag: RebootFlag,
) -> Self::SdHeader;
fn set_reboot_flag(header: &mut Self::SdHeader, reboot: RebootFlag);
// Provided methods
fn offered_endpoints(&self) -> Vec<OfferedEndpoint> { ... }
fn service_instances(&self) -> Vec<(u16, u16)> { ... }
}Expand description
A trait for SOME/IP Payload types that can be serialized to a
Writer and constructed from raw payload bytes.
Note that SOME/IP payloads are not self identifying, so the Message ID must be provided by the caller.
Required Associated Types§
Required Methods§
Sourcefn message_id(&self) -> MessageId
fn message_id(&self) -> MessageId
Get the Message ID for the payload
Sourcefn as_sd_header(&self) -> Option<&Self::SdHeader>
fn as_sd_header(&self) -> Option<&Self::SdHeader>
Get the payload as a service discovery header
Sourcefn from_payload_bytes(
message_id: MessageId,
payload: &[u8],
) -> Result<Self, Error>
fn from_payload_bytes( message_id: MessageId, payload: &[u8], ) -> Result<Self, Error>
Construct a payload from raw bytes and a message ID.
§Errors
- If the message ID is not supported
- If the payload bytes cannot be parsed
Sourcefn new_sd_payload(header: &Self::SdHeader) -> Self
fn new_sd_payload(header: &Self::SdHeader) -> Self
Create a PayloadWireFormat from a service discovery Header
Sourcefn sd_flags(&self) -> Option<Flags>
fn sd_flags(&self) -> Option<Flags>
Return the SD flags if this payload is a service discovery message.
Sourcefn required_size(&self) -> usize
fn required_size(&self) -> usize
Number of bytes required to write the payload
Sourcefn new_subscription_sd_header(
service_id: u16,
instance_id: u16,
major_version: u8,
ttl: u32,
event_group_id: u16,
client_ip: Ipv4Addr,
protocol: TransportProtocol,
client_port: u16,
reboot_flag: RebootFlag,
) -> Self::SdHeader
fn new_subscription_sd_header( service_id: u16, instance_id: u16, major_version: u8, ttl: u32, event_group_id: u16, client_ip: Ipv4Addr, protocol: TransportProtocol, client_port: u16, reboot_flag: RebootFlag, ) -> Self::SdHeader
Construct an SD header for subscribing to an event group.
Sourcefn set_reboot_flag(header: &mut Self::SdHeader, reboot: RebootFlag)
fn set_reboot_flag(header: &mut Self::SdHeader, reboot: RebootFlag)
Override the reboot flag on an SD header in-place.
Used by Client::start_sd_announcements (when the client feature is
enabled) to refresh the reboot flag per-tick from the client’s tracked
state.
Provided Methods§
Sourcefn offered_endpoints(&self) -> Vec<OfferedEndpoint>
fn offered_endpoints(&self) -> Vec<OfferedEndpoint>
Extract offered/stopped service endpoints from this SD payload.
Default implementation returns an empty vec. Concrete implementations that have access to SD entries and options should override this.
Sourcefn service_instances(&self) -> Vec<(u16, u16)>
fn service_instances(&self) -> Vec<(u16, u16)>
Return (service_id, instance_id) pairs for every SD entry in this
payload, regardless of entry type.
Used for per-service-instance session/reboot tracking so that all SD traffic (not just offers) contributes to reboot detection.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".