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