1use alloc::collections::VecDeque;
2use codec::{Decode, Encode};
3use jam_types::{ServiceId, Slot};
4
5#[derive(Clone, Copy, Encode, Decode, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
13pub struct ServiceMessage {
14 #[codec(compact)]
16 pub index: u64,
17 pub source: ServiceId,
19}
20
21#[derive(Clone, Encode, Decode, Debug)]
23pub struct OutgoingServiceMessage {
24 pub slot: Slot,
26 pub inner: ServiceMessage,
27}
28
29#[derive(Encode, Decode, Debug)]
31pub struct MessageQueue<T> {
32 #[codec(compact)]
34 pub counter: u64,
35 pub messages: VecDeque<T>,
37}
38
39impl<T> Default for MessageQueue<T> {
40 fn default() -> Self {
41 Self { counter: 0, messages: VecDeque::new() }
42 }
43}