ONOS控制器中的事件监听器

事件监听器其实是观察者模式的一种实现


Subject为抽象主题接口,定义了主题类中对观察者列表的一系列操作, 包括增

Concretes Subject为具体主题类,实现抽象主题接口,在这个类中我们需要先定义一个Observers列表,并对接口中的方法进行重写,在实现notifaObservers方法时,通过迭代的方式调用list中每一个observer的update方法。这里注意notifyObservers中的同步块。在多线程的情况下, 为了避免主题类发布通知时, 其他线程对观察者列表的增删操作, 同步块中用一个临时List来获取当前的观察者列表。


Observer为抽象观察者接口,定义了观察者对主题类更新状态接受操作

ConcreteObserver为具体观察者类,实现观察者接口更新主题类通知等逻辑

事件监听器的逻辑结构如图所示


观察者(Observer)相当于事件监听者,被观察者(Observable)或者说主题(Subject)相当于事件源和事件,执行逻辑时通知observer即可触发oberver的update,同时可传被观察者和参数。


EventListener为事件监听器的父类接口


IntentListener接口继承了EventListener接口,并制定监听的对象为IntentEvent


IntentManager继承了父类AbstractListenerManager,AbstractListenerManager相当于事件源,在这里实现了注册listener,移除listener和post方法。在这里,nofity方法相当于post,当出现intent event,intentManager负责调用通知eventDispatcher,再由eventDispatcher负责具体事件的分发。


eventDispatcher接口定义了post方法,eventdeliveryService继承了eventdispatcher接口并定义了一个新方法来控制event sink处理event的时间。

coreEventDispatcher类继承了defaultEventSinkRegistry并实现了eventDeverliveryService接口,负责具体事件分发处理。

你可能感兴趣的:(ONOS控制器中的事件监听器)