From c96ab05d7d0fb9ede820d89ea5e5b55820554e29 Mon Sep 17 00:00:00 2001
From: swwheihei <swwheihei@163.com>
Date: 星期四, 16 七月 2020 17:31:41 +0800
Subject: [PATCH] 尝试解决内存溢出,并使用多线程提高性能

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java |   41 ++++++++++++++++++++++++-----------------
 1 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
index 7f07406..a90429a 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
@@ -7,7 +7,6 @@
 
 import javax.sip.InvalidArgumentException;
 import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
 import javax.sip.SipException;
 import javax.sip.header.AuthorizationHeader;
 import javax.sip.header.ContactHeader;
@@ -17,19 +16,16 @@
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
 import com.genersoft.iot.vmp.common.VideoManagerConstants;
 import com.genersoft.iot.vmp.conf.SipConfig;
-import com.genersoft.iot.vmp.gb28181.SipLayer;
 import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
 import com.genersoft.iot.vmp.gb28181.auth.RegisterLogicHandler;
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.bean.Host;
 import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
-import com.genersoft.iot.vmp.gb28181.transmit.request.ISIPRequestProcessor;
+import com.genersoft.iot.vmp.gb28181.transmit.request.SIPRequestAbstractProcessor;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 
 import gov.nist.javax.sip.address.AddressImpl;
@@ -41,19 +37,14 @@
  * @author: swwheihei
  * @date:   2020骞�5鏈�3鏃� 涓嬪崍4:47:25     
  */
-@Component
-public class RegisterRequestProcessor implements ISIPRequestProcessor {
+public class RegisterRequestProcessor extends SIPRequestAbstractProcessor {
 
-	@Autowired
 	private SipConfig sipConfig;
 	
-	@Autowired
 	private RegisterLogicHandler handler;
 	
-	@Autowired
 	private IVideoManagerStorager storager;
 	
-	@Autowired
 	private EventPublisher publisher;
 	
 	/***
@@ -63,7 +54,7 @@
 	 *            璇锋眰娑堟伅
 	 */ 
 	@Override
-	public void process(RequestEvent evt, SipLayer layer) {
+	public void process(RequestEvent evt) {
 		try {
 			System.out.println("鏀跺埌娉ㄥ唽璇锋眰锛屽紑濮嬪鐞�");
 			Request request = evt.getRequest();
@@ -88,14 +79,14 @@
 				} else if (!passwordCorrect) {
 					System.out.println("瀵嗙爜閿欒 鍥炲401");
 				}
-				response = layer.getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
-				new DigestServerAuthenticationHelper().generateChallenge(layer.getHeaderFactory(), response, sipConfig.getSipDomain());
+				response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
+				new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getSipDomain());
 			}
 			// 鎼哄甫鎺堟潈澶村苟涓斿瘑鐮佹纭�
 			else if (passwordCorrect) {
-				response = layer.getMessageFactory().createResponse(Response.OK, request);
+				response = getMessageFactory().createResponse(Response.OK, request);
 				// 娣诲姞date澶�
-				response.addHeader(layer.getHeaderFactory().createDateHeader(Calendar.getInstance(Locale.ENGLISH)));
+				response.addHeader(getHeaderFactory().createDateHeader(Calendar.getInstance(Locale.ENGLISH)));
 				ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
 				// 娣诲姞Contact澶�
 				response.addHeader(request.getHeader(ContactHeader.NAME));
@@ -141,7 +132,7 @@
 					device.setTransport(isTcp ? "TCP" : "UDP");
 				}
 			}
-			layer.getServerTransaction(evt).sendResponse(response);
+			getServerTransaction(evt).sendResponse(response);
 			// 娉ㄥ唽鎴愬姛
 			// 淇濆瓨鍒皉edis
 			// 涓嬪彂catelog鏌ヨ鐩綍
@@ -159,5 +150,21 @@
 		}
 		
 	}
+	
+	public void setSipConfig(SipConfig sipConfig) {
+		this.sipConfig = sipConfig;
+	}
+
+	public void setHandler(RegisterLogicHandler handler) {
+		this.handler = handler;
+	}
+
+	public void setVideoManagerStorager(IVideoManagerStorager storager) {
+		this.storager = storager;
+	}
+
+	public void setPublisher(EventPublisher publisher) {
+		this.publisher = publisher;
+	}
 
 }

--
Gitblit v1.8.0