mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 16:30:29 +08:00
dee355b4a7
- artifacts/decompiled 树与相关源码变更 - maven-cw-elevator-application 业务 docs 与 package-info - scripts 下 formatter 校验与辅助脚本 - 其他子工程/接口与发布线一并纳入版本控制 Made-with: Cursor Former-commit-id: e102e8cab64e575bcd23c9a66a598aa1892bb492
109 lines
2.7 KiB
Java
109 lines
2.7 KiB
Java
package cn.cloudwalk.event;
|
|
|
|
import cn.cloudwalk.cwos.client.event.EventClient;
|
|
import cn.cloudwalk.cwos.client.event.event.BaseEvent;
|
|
import cn.cloudwalk.cwos.client.event.event.CustomEvent;
|
|
import cn.cloudwalk.event.handler.CustomEventHandler;
|
|
import cn.cloudwalk.event.handler.EventHandler;
|
|
import cn.cloudwalk.event.handler.EventHandlerMapping;
|
|
import cn.cloudwalk.event.handler.EventHandlerWorker;
|
|
import cn.cloudwalk.event.listener.GroupEventListener;
|
|
import cn.cloudwalk.event.listener.GroupListnerClassMapping;
|
|
import cn.cloudwalk.event.task.EventHandleTask;
|
|
import java.util.List;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class CloudwalkEventManager
|
|
{
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(CloudwalkEventManager.class);
|
|
|
|
|
|
|
|
private EventHandlerMapping eventHandlerMapping;
|
|
|
|
|
|
private EventHandlerWorker eventHandlerWorker;
|
|
|
|
|
|
private GroupListnerClassMapping groupListnerClassMapping;
|
|
|
|
|
|
private EventClient eventClient;
|
|
|
|
|
|
|
|
public void handle(Class<? extends GroupEventListener> eventListnerClass, BaseEvent baseEvent) {
|
|
String groupId = this.groupListnerClassMapping.getGroupId(eventListnerClass);
|
|
|
|
if (baseEvent instanceof CustomEvent) {
|
|
|
|
|
|
List<CustomEventHandler> customEventHandlers = (List<CustomEventHandler>)this.eventHandlerMapping.getServiceCodeCustomHandlerListMap(groupId, ((CustomEvent)baseEvent).getTopic()).get(baseEvent.getServiceCode());
|
|
eventHandle(baseEvent, customEventHandlers);
|
|
|
|
return;
|
|
}
|
|
|
|
List<EventHandler> handlerList = (List<EventHandler>)this.eventHandlerMapping.getServiceCodeHandlerListMap(groupId, baseEvent.getClass()).get(baseEvent.getServiceCode());
|
|
eventHandle(baseEvent, handlerList);
|
|
}
|
|
|
|
private <H extends EventHandler> void eventHandle(BaseEvent baseEvent, List<H> handlers) {
|
|
if (CollectionUtils.isEmpty(handlers)) {
|
|
LOGGER.error("没有相应的事件处理程序");
|
|
return;
|
|
}
|
|
for (EventHandler eventHandler : handlers) {
|
|
this.eventHandlerWorker.work(new EventHandleTask(baseEvent, eventHandler));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void publish(BaseEvent baseEvent) {
|
|
this.eventClient.pubEvent(baseEvent);
|
|
}
|
|
|
|
public void setEventHandlerMapping(EventHandlerMapping eventHandlerMapping) {
|
|
this.eventHandlerMapping = eventHandlerMapping;
|
|
}
|
|
|
|
public EventHandlerMapping getEventHandlerMapping() {
|
|
return this.eventHandlerMapping;
|
|
}
|
|
|
|
public void setEventHandlerWorker(EventHandlerWorker eventHandlerWorker) {
|
|
this.eventHandlerWorker = eventHandlerWorker;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setEventClient(EventClient eventClient) {
|
|
this.eventClient = eventClient;
|
|
}
|
|
|
|
public void setGroupListnerClassMapping(GroupListnerClassMapping groupListnerClassMapping) {
|
|
this.groupListnerClassMapping = groupListnerClassMapping;
|
|
}
|
|
}
|
|
|
|
|