|  |  | 
 |  |  | package com.genersoft.iot.vmp.gb28181.transmit.cmd; | 
 |  |  |  | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 
 |  |  | import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.*; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; | 
 |  |  | import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; | 
 |  |  | import com.genersoft.iot.vmp.service.bean.SSRCInfo; | 
 |  |  |  | 
 |  |  | import javax.sip.InvalidArgumentException; | 
 |  |  | import javax.sip.SipException; | 
 |  |  | import javax.sip.header.WWWAuthenticateHeader; | 
 |  |  | import java.text.ParseException; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | public interface ISIPCommanderForPlatform { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级平台注册 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     boolean register(ParentPlatform parentPlatform); | 
 |  |  |     void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) | 
 |  |  |             throws InvalidArgumentException, ParseException, SipException; | 
 |  |  |  | 
 |  |  |     boolean register(ParentPlatform parentPlatform, String callId, String realm, String nonce, String scheme); | 
 |  |  |     void register(ParentPlatform parentPlatform, String callId, WWWAuthenticateHeader www, | 
 |  |  |                   SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) | 
 |  |  |             throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级平台注销 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void unregister(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) | 
 |  |  |             throws InvalidArgumentException, ParseException, SipException; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级平发送心跳信息 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform | 
 |  |  |      * @return callId(作为接受回复的判定) | 
 |  |  |      */ | 
 |  |  |     String keepalive(ParentPlatform parentPlatform); | 
 |  |  |     String keepalive(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) | 
 |  |  |             throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级回复通道信息 | 
 |  |  |      * | 
 |  |  |      * @param channel        通道信息 | 
 |  |  |      * @param parentPlatform 平台信息 | 
 |  |  |      * @param sn | 
 |  |  |      * @param fromTag | 
 |  |  |      * @param size | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void catalogQuery(DeviceChannel channel, ParentPlatform parentPlatform, String sn, String fromTag, int size) | 
 |  |  |             throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     void catalogQuery(List<DeviceChannel> channels, ParentPlatform parentPlatform, String sn, String fromTag) | 
 |  |  |             throws InvalidArgumentException, ParseException, SipException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级回复DeviceInfo查询信息 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform 平台信息 | 
 |  |  |      * @param sn SN | 
 |  |  |      * @param fromTag FROM头的tag信息 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void deviceInfoResponse(ParentPlatform parentPlatform,Device device, String sn, String fromTag) throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级回复DeviceStatus查询信息 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform 平台信息 | 
 |  |  |      * @param sn | 
 |  |  |      * @param fromTag | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void deviceStatusResponse(ParentPlatform parentPlatform,String channelId, String sn, String fromTag,int status) throws SipException, InvalidArgumentException, ParseException ; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级回复移动位置订阅消息 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform 平台信息 | 
 |  |  |      * @param gpsMsgInfo     GPS信息 | 
 |  |  |      * @param subscribeInfo  订阅相关的信息 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void sendNotifyMobilePosition(ParentPlatform parentPlatform, GPSMsgInfo gpsMsgInfo, SubscribeInfo subscribeInfo) | 
 |  |  |             throws InvalidArgumentException, ParseException, NoSuchFieldException, SipException, IllegalAccessException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向上级回复报警消息 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform 平台信息 | 
 |  |  |      * @param deviceAlarm    报警信息信息 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void sendAlarmMessage(ParentPlatform parentPlatform, DeviceAlarm deviceAlarm) throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 回复catalog事件-增加/更新 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform | 
 |  |  |      * @param deviceChannels | 
 |  |  |      */ | 
 |  |  |     void sendNotifyForCatalogAddOrUpdate(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, SubscribeInfo subscribeInfo, Integer index) throws InvalidArgumentException, ParseException, NoSuchFieldException, SipException, IllegalAccessException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 回复catalog事件-删除 | 
 |  |  |      * | 
 |  |  |      * @param parentPlatform | 
 |  |  |      * @param deviceChannels | 
 |  |  |      */ | 
 |  |  |     void sendNotifyForCatalogOther(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, | 
 |  |  |                                    SubscribeInfo subscribeInfo, Integer index) throws InvalidArgumentException, | 
 |  |  |             ParseException, NoSuchFieldException, SipException, IllegalAccessException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 回复recordInfo | 
 |  |  |      * | 
 |  |  |      * @param deviceChannel  通道信息 | 
 |  |  |      * @param parentPlatform 平台信息 | 
 |  |  |      * @param fromTag        fromTag | 
 |  |  |      * @param recordInfo     录像信息 | 
 |  |  |      */ | 
 |  |  |     void recordInfo(DeviceChannel deviceChannel, ParentPlatform parentPlatform, String fromTag, RecordInfo recordInfo) | 
 |  |  |             throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 录像播放推送完成时发送MediaStatus消息 | 
 |  |  |      * | 
 |  |  |      * @param platform | 
 |  |  |      * @param sendRtpItem | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     void sendMediaStatusNotify(ParentPlatform platform, SendRtpItem sendRtpItem) throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 向发起点播的上级回复bye | 
 |  |  |      * | 
 |  |  |      * @param platform 平台信息 | 
 |  |  |      * @param callId   callId | 
 |  |  |      */ | 
 |  |  |     void streamByeCmd(ParentPlatform platform, String callId) throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     void streamByeCmd(ParentPlatform platform, SendRtpItem sendRtpItem) throws SipException, InvalidArgumentException, ParseException; | 
 |  |  |  | 
 |  |  |     void streamByeCmd(ParentPlatform platform, String channelId, String stream, String callId, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException, SsrcTransactionNotFoundException; | 
 |  |  |  | 
 |  |  |     void broadcastInviteCmd(ParentPlatform platform, String channelId, MediaServerItem mediaServerItem, | 
 |  |  |                             SSRCInfo ssrcInfo, ZlmHttpHookSubscribe.Event event, SipSubscribe.Event okEvent, | 
 |  |  |                             SipSubscribe.Event errorEvent) throws ParseException, SipException, InvalidArgumentException; | 
 |  |  |  | 
 |  |  |     void broadcastResultCmd(ParentPlatform platform, DeviceChannel deviceChannel, String sn, boolean result, SipSubscribe.Event errorEvent,  SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException; | 
 |  |  | } |