1 package io.getunleash.event;
2
3 import io.getunleash.util.UnleashConfig;
4 import io.getunleash.util.UnleashScheduledExecutor;
5
6 public class EventDispatcher {
7
8     private final UnleashSubscriber unleashSubscriber;
9     private final UnleashScheduledExecutor unleashScheduledExecutor;
10
11     public EventDispatcher(UnleashConfig unleashConfig) {
12         this.unleashSubscriber = unleashConfig.getSubscriber();
13         this.unleashScheduledExecutor = unleashConfig.getScheduledExecutor();
14     }
15
16     public void dispatch(UnleashEvent unleashEvent) {
17         unleashScheduledExecutor.scheduleOnce(
18                 () -> {
19                     unleashSubscriber.on(unleashEvent);
20                     unleashEvent.publishTo(unleashSubscriber);
21                 });
22     }
23 }
24