chekov 0.1.1

CQRS/ES Framework
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use super::*;

#[doc(hidden)]
pub type EventHandlerFn<A> = fn(&mut A, RecordedEvent) -> BoxFuture<Result<(), ()>>;

#[doc(hidden)]
pub struct EventHandlerResolverRegistry<E: EventHandler> {
    pub names: BTreeMap<&'static str, TypeId>,
    pub handlers: BTreeMap<TypeId, EventHandlerFn<E>>,
}

impl<E: EventHandler> EventHandlerResolverRegistry<E> {
    pub fn get(&self, event_name: &str) -> Option<&EventHandlerFn<E>> {
        let type_id = self.names.get(event_name)?;

        self.handlers.get(type_id)
    }
}