From bf7ab3fe2ba246208d729901c33a9402209ee26a Mon Sep 17 00:00:00 2001 From: songww <songww@inspur.com> Date: 星期五, 08 五月 2020 21:57:07 +0800 Subject: [PATCH] 优化代码结构,提供NVR录像检索接口 --- src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java | 173 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 100 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java index 4d08fcc..273f4ed 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java @@ -2,6 +2,7 @@ import java.util.Properties; +import javax.annotation.PostConstruct; import javax.sip.DialogTerminatedEvent; import javax.sip.IOExceptionEvent; import javax.sip.ListeningPoint; @@ -26,7 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import com.genersoft.iot.vmp.conf.SipConfig; @@ -37,70 +37,78 @@ import gov.nist.javax.sip.SipStackImpl; @Component -public class SipLayer implements SipListener{ - +public class SipLayer implements SipListener, Runnable { + private final static Logger logger = LoggerFactory.getLogger(SipLayer.class); - + @Autowired private SipConfig config; - + private SipProvider tcpSipProvider; - + private SipProvider udpSipProvider; - + @Autowired private SIPProcessorFactory processorFactory; - + private SipStack sipStack; - + private AddressFactory addressFactory; private HeaderFactory headerFactory; private MessageFactory messageFactory; - @Bean - private boolean initSipServer() throws Exception { + @PostConstruct + private void initSipServer() { + Thread thread=new Thread(this); + thread.setDaemon(true); + thread.setName("sip server thread start"); + thread.start(); + } + + @Override + public void run() { SipFactory sipFactory = SipFactory.getInstance(); sipFactory.setPathName("gov.nist"); - headerFactory = sipFactory.createHeaderFactory(); - addressFactory = sipFactory.createAddressFactory(); - messageFactory = sipFactory.createMessageFactory(); - - Properties properties = new Properties(); - properties.setProperty("javax.sip.STACK_NAME", "GB28181_SIP"); - properties.setProperty("javax.sip.IP_ADDRESS", config.getSipIp()); - /** - * sip_server_log.log 鍜� sip_debug_log.log public static final int TRACE_NONE = - * 0; public static final int TRACE_MESSAGES = 16; public static final int - * TRACE_EXCEPTION = 17; public static final int TRACE_DEBUG = 32; - */ - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "16"); - properties.setProperty("gov.nist.javax.sip.SERVER_LOG", "sip_server_log"); - properties.setProperty("gov.nist.javax.sip.DEBUG_LOG", "sip_debug_log"); - sipStack = (SipStackImpl) sipFactory.createSipStack(properties); - try { + headerFactory = sipFactory.createHeaderFactory(); + + addressFactory = sipFactory.createAddressFactory(); + messageFactory = sipFactory.createMessageFactory(); + + Properties properties = new Properties(); + properties.setProperty("javax.sip.STACK_NAME", "GB28181_SIP"); + properties.setProperty("javax.sip.IP_ADDRESS", config.getSipIp()); + properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "false"); + /** + * sip_server_log.log 鍜� sip_debug_log.log public static final int TRACE_NONE = + * 0; public static final int TRACE_MESSAGES = 16; public static final int + * TRACE_EXCEPTION = 17; public static final int TRACE_DEBUG = 32; + */ + properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "0"); + properties.setProperty("gov.nist.javax.sip.SERVER_LOG", "sip_server_log"); + properties.setProperty("gov.nist.javax.sip.DEBUG_LOG", "sip_debug_log"); + sipStack = (SipStackImpl) sipFactory.createSipStack(properties); + startTcpListener(); startUdpListener(); } catch (Exception e) { - logger.error("Sip Server 鍚姩澶辫触锛� port {"+config.getSipPort()+"}"); + logger.error("Sip Server 鍚姩澶辫触锛� port {" + config.getSipPort() + "}"); e.printStackTrace(); - throw e; } - logger.info("Sip Server 鍚姩鎴愬姛 port {"+config.getSipPort()+"}"); - return true; + logger.info("Sip Server 鍚姩鎴愬姛 port {" + config.getSipPort() + "}"); } - + private void startTcpListener() throws Exception { ListeningPoint tcpListeningPoint = sipStack.createListeningPoint(config.getSipIp(), config.getSipPort(), "TCP"); tcpSipProvider = sipStack.createSipProvider(tcpListeningPoint); tcpSipProvider.addSipListener(this); - } - - private void startUdpListener() throws Exception { + } + + private void startUdpListener() throws Exception { ListeningPoint udpListeningPoint = sipStack.createListeningPoint(config.getSipIp(), config.getSipPort(), "UDP"); udpSipProvider = sipStack.createSipProvider(udpListeningPoint); udpSipProvider.addSipListener(this); - } + } /** * SIP鏈嶅姟绔帴鏀舵秷鎭殑鏂规硶 Content 閲岄潰鏄疓BK缂栫爜 This method is called by the SIP stack when a @@ -118,60 +126,80 @@ int status = response.getStatusCode(); if ((status >= 200) && (status < 300)) { // Success! ISIPResponseProcessor processor = processorFactory.createResponseProcessor(evt); - processor.process(evt,this,config); + processor.process(evt, this, config); } else { - logger.warn("鎺ユ敹鍒板け璐ョ殑response鍝嶅簲锛乻tatus锛�"+status+",message:"+response.getContent().toString()); + logger.warn("鎺ユ敹鍒板け璐ョ殑response鍝嶅簲锛乻tatus锛�" + status + ",message:" + response.getContent().toString()); } - //trying涓嶄細鍥炲 - if(status == Response.TRYING){ + // trying涓嶄細鍥炲 + if (status == Response.TRYING) { } } - /** - * <p>Title: processTimeout</p> - * <p>Description: </p> - * @param timeoutEvent - */ + /** + * <p> + * Title: processTimeout + * </p> + * <p> + * Description: + * </p> + * + * @param timeoutEvent + */ @Override public void processTimeout(TimeoutEvent timeoutEvent) { // TODO Auto-generated method stub - + } - /** - * <p>Title: processIOException</p> - * <p>Description: </p> - * @param exceptionEvent - */ + /** + * <p> + * Title: processIOException + * </p> + * <p> + * Description: + * </p> + * + * @param exceptionEvent + */ @Override public void processIOException(IOExceptionEvent exceptionEvent) { // TODO Auto-generated method stub - + } - /** - * <p>Title: processTransactionTerminated</p> - * <p>Description: </p> - * @param transactionTerminatedEvent - */ + /** + * <p> + * Title: processTransactionTerminated + * </p> + * <p> + * Description: + * </p> + * + * @param transactionTerminatedEvent + */ @Override public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) { // TODO Auto-generated method stub - + } - /** - * <p>Title: processDialogTerminated</p> - * <p>Description: </p> - * @param dialogTerminatedEvent - */ + /** + * <p> + * Title: processDialogTerminated + * </p> + * <p> + * Description: + * </p> + * + * @param dialogTerminatedEvent + */ @Override public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) { // TODO Auto-generated method stub - + } - + private ServerTransaction getServerTransaction(RequestEvent evt) { Request request = evt.getRequest(); ServerTransaction serverTransaction = evt.getServerTransaction(); @@ -185,11 +213,11 @@ if (serverTransaction == null) { try { - if (isTcp) { - serverTransaction = tcpSipProvider.getNewServerTransaction(request); - } else { - serverTransaction = udpSipProvider.getNewServerTransaction(request); - } + if (isTcp) { + serverTransaction = tcpSipProvider.getNewServerTransaction(request); + } else { + serverTransaction = udpSipProvider.getNewServerTransaction(request); + } } catch (TransactionAlreadyExistsException e) { e.printStackTrace(); } catch (TransactionUnavailableException e) { @@ -198,7 +226,6 @@ } return serverTransaction; } - public AddressFactory getAddressFactory() { return addressFactory; @@ -219,5 +246,5 @@ public SipProvider getUdpSipProvider() { return udpSipProvider; } - + } -- Gitblit v1.8.0