Skip to main content

BatchMessage

Trait BatchMessage 

Source
pub trait BatchMessage:
    Serialize
    + for<'de> Deserialize<'de>
    + Send
    + Sync
    + 'static {
    // Required method
    fn message_type_id() -> u64;

    // Provided methods
    fn to_json(&self) -> Result<Vec<u8>, Error> { ... }
    fn from_json(bytes: &[u8]) -> Result<Self, Error>
       where Self: Sized { ... }
    fn size_hint(&self) -> usize { ... }
}
Expand description

Trait for batch kernel messages (CPU-orchestrated execution).

This trait provides serialization and type information for messages used with BatchKernel implementations. Unlike RingMessage which uses rkyv for GPU-native serialization, BatchMessage uses serde for JSON serialization suitable for CPU-side orchestration.

Typically derived using #[derive(KernelMessage)]:

#[derive(Debug, Clone, Serialize, Deserialize, KernelMessage)]
#[message(type_id = 100, domain = "GraphAnalytics")]
pub struct PageRankInput {
    pub graph: CsrGraph,
    pub damping: f64,
}

Required Methods§

Source

fn message_type_id() -> u64

Get the message type ID.

Provided Methods§

Source

fn to_json(&self) -> Result<Vec<u8>, Error>

Serialize to JSON bytes.

Source

fn from_json(bytes: &[u8]) -> Result<Self, Error>
where Self: Sized,

Deserialize from JSON bytes.

Source

fn size_hint(&self) -> usize

Get the size hint for serialized data.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§