package com.genersoft.iot.vmp.gb28181.event;
|
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
import com.genersoft.iot.vmp.gb28181.event.device.RequestTimeoutEvent;
|
import com.genersoft.iot.vmp.gb28181.event.record.RecordEndEvent;
|
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
|
import com.genersoft.iot.vmp.media.zlm.event.ZLMOfflineEvent;
|
import com.genersoft.iot.vmp.media.zlm.event.ZLMOnlineEvent;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.stereotype.Component;
|
|
import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEvent;
|
|
import javax.sip.TimeoutEvent;
|
import java.util.ArrayList;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
/**
|
* @description:Event事件通知推送器,支持推送在线事件、离线事件
|
* @author: swwheihei
|
* @date: 2020年5月6日 上午11:30:50
|
*/
|
@Component
|
public class EventPublisher {
|
|
@Autowired
|
private ApplicationEventPublisher applicationEventPublisher;
|
|
/**
|
* 设备报警事件
|
* @param deviceAlarm
|
*/
|
public void deviceAlarmEventPublish(DeviceAlarm deviceAlarm) {
|
AlarmEvent alarmEvent = new AlarmEvent(this);
|
alarmEvent.setAlarmInfo(deviceAlarm);
|
applicationEventPublisher.publishEvent(alarmEvent);
|
}
|
|
public void zlmOfflineEventPublish(String mediaServerId){
|
ZLMOfflineEvent outEvent = new ZLMOfflineEvent(this);
|
outEvent.setMediaServerId(mediaServerId);
|
applicationEventPublisher.publishEvent(outEvent);
|
}
|
|
public void zlmOnlineEventPublish(String mediaServerId) {
|
ZLMOnlineEvent outEvent = new ZLMOnlineEvent(this);
|
outEvent.setMediaServerId(mediaServerId);
|
applicationEventPublisher.publishEvent(outEvent);
|
}
|
|
|
public void catalogEventPublish(String platformId, DeviceChannel deviceChannel, String type) {
|
List<DeviceChannel> deviceChannelList = new ArrayList<>();
|
deviceChannelList.add(deviceChannel);
|
catalogEventPublish(platformId, deviceChannelList, type);
|
}
|
|
|
public void requestTimeOut(TimeoutEvent timeoutEvent) {
|
RequestTimeoutEvent requestTimeoutEvent = new RequestTimeoutEvent(this);
|
requestTimeoutEvent.setTimeoutEvent(timeoutEvent);
|
applicationEventPublisher.publishEvent(requestTimeoutEvent);
|
}
|
|
|
/**
|
*
|
* @param platformId
|
* @param deviceChannels
|
* @param type
|
*/
|
public void catalogEventPublish(String platformId, List<DeviceChannel> deviceChannels, String type) {
|
CatalogEvent outEvent = new CatalogEvent(this);
|
List<DeviceChannel> channels = new ArrayList<>();
|
if (deviceChannels.size() > 1) {
|
// 数据去重
|
Set<String> gbIdSet = new HashSet<>();
|
for (DeviceChannel deviceChannel : deviceChannels) {
|
if (!gbIdSet.contains(deviceChannel.getChannelId())) {
|
gbIdSet.add(deviceChannel.getChannelId());
|
channels.add(deviceChannel);
|
}
|
}
|
}else {
|
channels = deviceChannels;
|
}
|
outEvent.setDeviceChannels(channels);
|
outEvent.setType(type);
|
outEvent.setPlatformId(platformId);
|
applicationEventPublisher.publishEvent(outEvent);
|
}
|
|
|
public void catalogEventPublishForStream(String platformId, List<GbStream> gbStreams, String type) {
|
CatalogEvent outEvent = new CatalogEvent(this);
|
outEvent.setGbStreams(gbStreams);
|
outEvent.setType(type);
|
outEvent.setPlatformId(platformId);
|
applicationEventPublisher.publishEvent(outEvent);
|
}
|
|
|
public void catalogEventPublishForStream(String platformId, GbStream gbStream, String type) {
|
List<GbStream> gbStreamList = new ArrayList<>();
|
gbStreamList.add(gbStream);
|
catalogEventPublishForStream(platformId, gbStreamList, type);
|
}
|
|
public void recordEndEventPush(RecordInfo recordInfo) {
|
RecordEndEvent outEvent = new RecordEndEvent(this);
|
outEvent.setRecordInfo(recordInfo);
|
applicationEventPublisher.publishEvent(outEvent);
|
}
|
|
}
|