ethexe_common/events/
mod.rs1use gprimitives::ActorId;
5use parity_scale_codec::{Decode, Encode};
6use scale_info::TypeInfo;
7
8pub mod mirror;
9pub mod router;
10pub mod wvara;
11
12pub use mirror::{Event as MirrorEvent, RequestEvent as MirrorRequestEvent};
13pub use router::{Event as RouterEvent, RequestEvent as RouterRequestEvent};
14pub use wvara::Event as WVaraEvent;
15
16#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode, TypeInfo, Hash)]
17pub enum BlockEvent {
18 Mirror {
19 actor_id: ActorId,
20 event: MirrorEvent,
21 },
22 Router(RouterEvent),
23}
24
25impl BlockEvent {
26 pub fn mirror(actor_id: ActorId, event: MirrorEvent) -> Self {
27 Self::Mirror { actor_id, event }
28 }
29
30 pub fn to_request(self) -> Option<BlockRequestEvent> {
31 Some(match self {
32 Self::Mirror { actor_id, event } => BlockRequestEvent::Mirror {
33 actor_id,
34 event: event.to_request()?,
35 },
36 Self::Router(event) => BlockRequestEvent::Router(event.to_request()?),
37 })
38 }
39}
40
41impl From<(ActorId, MirrorEvent)> for BlockEvent {
42 fn from((actor_id, event): (ActorId, MirrorEvent)) -> Self {
43 Self::mirror(actor_id, event)
44 }
45}
46
47impl From<RouterEvent> for BlockEvent {
48 fn from(value: RouterEvent) -> Self {
49 Self::Router(value)
50 }
51}
52
53#[derive(Clone, Debug, PartialEq, Eq, Decode, Encode)]
54#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
55pub enum BlockRequestEvent {
56 Router(RouterRequestEvent),
57 Mirror {
58 actor_id: ActorId,
59 event: MirrorRequestEvent,
60 },
61}
62
63impl BlockRequestEvent {
64 pub fn mirror(actor_id: ActorId, event: MirrorRequestEvent) -> Self {
65 Self::Mirror { actor_id, event }
66 }
67}
68
69impl From<(ActorId, MirrorRequestEvent)> for BlockRequestEvent {
70 fn from((actor_id, event): (ActorId, MirrorRequestEvent)) -> Self {
71 Self::mirror(actor_id, event)
72 }
73}
74
75impl From<RouterRequestEvent> for BlockRequestEvent {
76 fn from(value: RouterRequestEvent) -> Self {
77 Self::Router(value)
78 }
79}