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