@ -32,21 +32,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
private final Logger logger = LoggerFactory . getLogger ( SIPCommanderFroPlatform . class ) ;
// @Autowired
// private SipConfig sipConfig;
// @Autowired
// private SIPRequestHeaderProvider headerProvider;
@Autowired
private SIPRequestHeaderPlarformProvider headerProviderPlarformProvider ;
// @Autowired
// private VideoStreamSessionManager streamSession;
// @Autowired
// private IVideoManagerStorager storager;
@Autowired
private IRedisCatchStorage redisCatchStorage ;
@ -173,6 +161,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
}
private void transmitRequest ( ParentPlatform parentPlatform , Request request , SipSubscribe . Event errorEvent , SipSubscribe . Event okEvent ) throws SipException {
logger . debug ( "\n发送消息:\n{}" , request ) ;
if ( "TCP" . equals ( parentPlatform . getTransport ( ) ) ) {
tcpSipProvider . sendRequest ( request ) ;
@ -223,7 +212,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
catalogXml . append ( "<CivilCode>" + channel . getCivilCode ( ) + "</CivilCode>\r\n" ) ;
catalogXml . append ( "<Address>" + channel . getAddress ( ) + "</Address>\r\n" ) ;
catalogXml . append ( "<Parental>" + channel . getParental ( ) + "</Parental>\r\n" ) ;
catalogXml . append ( "<ParentID>" + channel . getParentId ( ) + "</ParentID>\r\n" ) ;
if ( channel . getParentId ( ) ! = null ) {
catalogXml . append ( "<ParentID>" + channel . getParentId ( ) + "</ParentID>\r\n" ) ;
}
catalogXml . append ( "<Secrecy>" + channel . getSecrecy ( ) + "</Secrecy>\r\n" ) ;
catalogXml . append ( "<RegisterWay>" + channel . getRegisterWay ( ) + "</RegisterWay>\r\n" ) ;
catalogXml . append ( "<Status>" + ( channel . getStatus ( ) = = 0 ? "OFF" : "ON" ) + "</Status>\r\n" ) ;
@ -358,7 +349,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
String tm = Long . toString ( System . currentTimeMillis ( ) ) ;
Request request = headerProviderPlarformProvider . createNotifyRequest ( parentPlatform , deviceStatusXml . toString ( ) , subscribeInfo . getToTag ( ) , subscribeInfo . getFromTag ( ) , callIdHeader ) ;
Request request = headerProviderPlarformProvider . createNotifyRequest ( parentPlatform ,
deviceStatusXml . toString ( ) , callIdHeader ,
"z9hG4bK-" + UUID . randomUUID ( ) . toString ( ) . replace ( "-" , "" ) , subscribeInfo ) ;
transmitRequest ( parentPlatform , request ) ;
} catch ( SipException | ParseException | InvalidArgumentException e ) {
@ -369,63 +362,73 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
}
@Override
public boolean sendNotifyForCatalogAddOrUpdate ( String type , ParentPlatform parentPlatform , List < DeviceChannel > deviceChannels , SubscribeInfo subscribeInfo ) {
public boolean sendNotifyForCatalogAddOrUpdate ( String type , ParentPlatform parentPlatform , List < DeviceChannel > deviceChannels , SubscribeInfo subscribeInfo , Integer index ) {
if ( parentPlatform = = null | | deviceChannels = = null | | deviceChannels . size ( ) = = 0 | | subscribeInfo = = null ) {
return false ;
}
for ( DeviceChannel channel : deviceChannels ) {
try {
StringBuffer catalogXml = new StringBuffer ( 600 ) ;
catalogXml . append ( "<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n" ) ;
catalogXml . append ( "<Notify>\r\n" ) ;
catalogXml . append ( "<CmdType>Catalog</CmdType>\r\n" ) ;
catalogXml . append ( "<SN>" + ( int ) ( ( Math . random ( ) * 9 + 1 ) * 100000 ) + "</SN>\r\n" ) ;
catalogXml . append ( "<SumNum>" + deviceChannels . size ( ) + "</SumNum>\r\n" ) ;
catalogXml . append ( "<DeviceList Num=\"1\">\r\n" ) ;
catalogXml . append ( "<Item>\r\n" ) ;
catalogXml . append ( "<DeviceID>" + channel . getChannelId ( ) + "</DeviceID>\r\n" ) ;
catalogXml . append ( "<Event>" + type + "</Event>\r\n" ) ;
catalogXml . append ( "<Name>" + channel . getName ( ) + "</Name>\r\n" ) ;
catalogXml . append ( "<Manufacturer>" + channel . getManufacture ( ) + "</Manufacturer>\r\n" ) ;
catalogXml . append ( "<Model>" + channel . getModel ( ) + "</Model>\r\n" ) ;
catalogXml . append ( "<Owner>" + channel . getOwner ( ) + "</Owner>\r\n" ) ;
catalogXml . append ( "<CivilCode>" + channel . getCivilCode ( ) + "</CivilCode>\r\n" ) ;
catalogXml . append ( "<Address>" + channel . getAddress ( ) + "</Address>\r\n" ) ;
catalogXml . append ( "<Parental>" + channel . getParental ( ) + "</Parental>\r\n" ) ;
catalogXml . append ( "<ParentID>" + channel . getParentId ( ) + "</ParentID>\r\n" ) ;
catalogXml . append ( "<Secrecy>" + channel . getSecrecy ( ) + "</Secrecy>\r\n" ) ;
catalogXml . append ( "<RegisterWay>" + channel . getRegisterWay ( ) + "</RegisterWay>\r\n" ) ;
catalogXml . append ( "<Status>" + ( channel . getStatus ( ) = = 0 ? "OFF" : "ON" ) + "</Status>\r\n" ) ;
catalogXml . append ( "<Longitude>" + channel . getLongitude ( ) + "</Longitude>\r\n" ) ;
catalogXml . append ( "<Latitude>" + channel . getLatitude ( ) + "</Latitude>\r\n" ) ;
catalogXml . append ( "<IPAddress>" + channel . getIpAddress ( ) + "</IPAddress>\r\n" ) ;
catalogXml . append ( "<Port>" + channel . getPort ( ) + "</Port>\r\n" ) ;
catalogXml . append ( "<Info>\r\n" ) ;
catalogXml . append ( "<PTZType>" + channel . getPTZType ( ) + "</PTZType>\r\n" ) ;
catalogXml . append ( "</Info>\r\n" ) ;
catalogXml . append ( "</Item>\r\n" ) ;
catalogXml . append ( "</DeviceList>\r\n" ) ;
catalogXml . append ( "</Notify>\r\n" ) ;
CallIdHeader callIdHeader = parentPlatform . getTransport ( ) . equals ( "TCP" ) ? tcpSipProvider . getNewCallId ( )
: udpSipProvider . getNewCallId ( ) ;
callIdHeader . setCallId ( subscribeInfo . getCallId ( ) ) ;
String tm = Long . toString ( System . currentTimeMillis ( ) ) ;
if ( index = = null ) {
index = 0 ;
}
Request request = headerProviderPlarformProvider . createNotifyRequest ( parentPlatform , catalogXml . toString ( ) , subscribeInfo . getToTag ( ) , subscribeInfo . getFromTag ( ) , callIdHeader ) ;
transmitRequest ( parentPlatform , request ) ;
Thread . sleep ( 10 ) ;
} catch ( SipException | ParseException | InvalidArgumentException e ) {
e . printStackTrace ( ) ;
return false ;
} catch ( InterruptedException e ) {
e . printStackTrace ( ) ;
try {
if ( index = = deviceChannels . size ( ) - 1 ) {
return true ;
}
Request request = getCatalogNotifyRequest ( parentPlatform , deviceChannels . get ( index ) , deviceChannels . size ( ) , type , subscribeInfo ) ;
index + = 1 ;
Integer finalIndex = index ;
transmitRequest ( parentPlatform , request , null , ( eventResult - > {
sendNotifyForCatalogAddOrUpdate ( type , parentPlatform , deviceChannels , subscribeInfo , finalIndex ) ;
} ) ) ;
} catch ( SipException | ParseException | InvalidArgumentException e ) {
e . printStackTrace ( ) ;
return false ;
}
return true ;
}
private Request getCatalogNotifyRequest ( ParentPlatform parentPlatform , DeviceChannel channel , int size , String type ,
SubscribeInfo subscribeInfo ) throws ParseException , InvalidArgumentException ,
PeerUnavailableException {
String catalogXmlContent = getCatalogXmlContent ( parentPlatform , channel , size , type ) ;
CallIdHeader callIdHeader = parentPlatform . getTransport ( ) . equals ( "TCP" ) ? tcpSipProvider . getNewCallId ( )
: udpSipProvider . getNewCallId ( ) ;
callIdHeader . setCallId ( subscribeInfo . getCallId ( ) ) ;
Request request = headerProviderPlarformProvider . createNotifyRequest ( parentPlatform , catalogXmlContent ,
callIdHeader , "z9hG4bK-" + UUID . randomUUID ( ) . toString ( ) . replace ( "-" , "" ) , subscribeInfo ) ;
return request ;
}
private String getCatalogXmlContent ( ParentPlatform parentPlatform , DeviceChannel channel , int sumNum , String type ) {
StringBuffer catalogXml = new StringBuffer ( 600 ) ;
catalogXml . append ( "<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n" ) ;
catalogXml . append ( "<Notify>\r\n" ) ;
catalogXml . append ( "<CmdType>Catalog</CmdType>\r\n" ) ;
catalogXml . append ( "<SN>" + ( int ) ( ( Math . random ( ) * 9 + 1 ) * 100000 ) + "</SN>\r\n" ) ;
catalogXml . append ( "<DeviceID>" + parentPlatform . getDeviceGBId ( ) + "</DeviceID>\r\n" ) ;
catalogXml . append ( "<SumNum>" + sumNum + "</SumNum>\r\n" ) ;
catalogXml . append ( "<DeviceList Num=\"1\">\r\n" ) ;
catalogXml . append ( "<Item>\r\n" ) ;
catalogXml . append ( "<DeviceID>" + channel . getChannelId ( ) + "</DeviceID>\r\n" ) ;
catalogXml . append ( "<Name>" + channel . getName ( ) + "</Name>\r\n" ) ;
catalogXml . append ( "<Manufacturer>" + channel . getManufacture ( ) + "</Manufacturer>\r\n" ) ;
catalogXml . append ( "<Model>" + channel . getModel ( ) + "</Model>\r\n" ) ;
catalogXml . append ( "<Owner>0</Owner>\r\n" ) ;
catalogXml . append ( "<CivilCode>CivilCode</CivilCode>\r\n" ) ;
catalogXml . append ( "<Address>" + channel . getAddress ( ) + "</Address>\r\n" ) ;
catalogXml . append ( "<Parental>" + channel . getParental ( ) + "</Parental>\r\n" ) ;
catalogXml . append ( "<ParentID>" + channel . getParentId ( ) + "</ParentID>\r\n" ) ;
catalogXml . append ( "<Secrecy>" + channel . getSecrecy ( ) + "</Secrecy>\r\n" ) ;
catalogXml . append ( "<RegisterWay>" + channel . getRegisterWay ( ) + "</RegisterWay>\r\n" ) ;
catalogXml . append ( "<Status>" + ( channel . getStatus ( ) = = 0 ? "OFF" : "ON" ) + "</Status>\r\n" ) ;
catalogXml . append ( "<Event>" + type + "</Event>\r\n" ) ;
catalogXml . append ( "</Item>\r\n" ) ;
catalogXml . append ( "</DeviceList>\r\n" ) ;
catalogXml . append ( "</Notify>\r\n" ) ;
return catalogXml . toString ( ) ;
}
@Override
public boolean sendNotifyForCatalogOther ( String type , ParentPlatform parentPlatform , List < DeviceChannel > deviceChannels , SubscribeInfo subscribeInfo ) {
if ( parentPlatform = = null
@ -442,6 +445,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
catalogXml . append ( "<Notify>\r\n" ) ;
catalogXml . append ( "<CmdType>Catalog</CmdType>\r\n" ) ;
catalogXml . append ( "<SN>" + ( int ) ( ( Math . random ( ) * 9 + 1 ) * 100000 ) + "</SN>\r\n" ) ;
catalogXml . append ( "<DeviceID>" + parentPlatform . getDeviceGBId ( ) + "</DeviceID>\r\n" ) ;
catalogXml . append ( "<SumNum>" + deviceChannels . size ( ) + "</SumNum>\r\n" ) ;
catalogXml . append ( "<DeviceList Num=\"1\">\r\n" ) ;
catalogXml . append ( "<Item>\r\n" ) ;
@ -457,7 +461,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
String tm = Long . toString ( System . currentTimeMillis ( ) ) ;
Request request = headerProviderPlarformProvider . createNotifyRequest ( parentPlatform , catalogXml . toString ( ) , subscribeInfo . getToTag ( ) , subscribeInfo . getFromTag ( ) , callIdHeader ) ;
Request request = headerProviderPlarformProvider . createNotifyRequest ( parentPlatform , catalogXml . toString ( ) ,
callIdHeader ,
"z9hG4bK-" + UUID . randomUUID ( ) . toString ( ) . replace ( "-" , "" ) , subscribeInfo ) ;
transmitRequest ( parentPlatform , request ) ;
Thread . sleep ( 200 ) ;
} catch ( SipException | ParseException | InvalidArgumentException e ) {