From 3745c80567cfdbd02cb60b2351d048f63eb6c1a2 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 09 十一月 2021 11:56:21 +0800 Subject: [PATCH] 重构28181信令的message结构 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java | 158 ---------------------------------------------------- 1 files changed, 1 insertions(+), 157 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java index 6cb9e7e..dd098f7 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorAbstract.java @@ -1,40 +1,16 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request; import gov.nist.javax.sip.SipProviderImpl; -import gov.nist.javax.sip.SipStackImpl; -import gov.nist.javax.sip.message.SIPRequest; -import gov.nist.javax.sip.stack.SIPServerTransaction; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; - -import javax.sip.*; -import javax.sip.address.Address; -import javax.sip.address.AddressFactory; -import javax.sip.address.SipURI; -import javax.sip.header.ContentTypeHeader; -import javax.sip.header.HeaderFactory; -import javax.sip.header.ViaHeader; -import javax.sip.message.MessageFactory; -import javax.sip.message.Request; -import javax.sip.message.Response; -import java.io.ByteArrayInputStream; -import java.text.ParseException; /** * @description:澶勭悊鎺ユ敹IPCamera鍙戞潵鐨凷IP鍗忚璇锋眰娑堟伅 * @author: songww * @date: 2020骞�5鏈�3鏃� 涓嬪崍4:42:22 */ -public abstract class SIPRequestProcessorAbstract implements InitializingBean, ISIPRequestProcessor { +public abstract class SIPRequestProcessorAbstract { - private final static Logger logger = LoggerFactory.getLogger(SIPRequestProcessorAbstract.class); @Autowired @Qualifier(value="tcpSipProvider") @@ -43,137 +19,5 @@ @Autowired @Qualifier(value="udpSipProvider") private SipProviderImpl udpSipProvider; - - /** - * 鏍规嵁 RequestEvent 鑾峰彇 ServerTransaction - * @param evt - * @return - */ - public ServerTransaction getServerTransaction(RequestEvent evt) { - Request request = evt.getRequest(); - ServerTransaction serverTransaction = evt.getServerTransaction(); - // 鍒ゆ柇TCP杩樻槸UDP - boolean isTcp = false; - ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); - String transport = reqViaHeader.getTransport(); - if (transport.equals("TCP")) { - isTcp = true; - } - - if (serverTransaction == null) { - try { - if (isTcp) { - SipStackImpl stack = (SipStackImpl)tcpSipProvider.getSipStack(); - serverTransaction = (SIPServerTransaction) stack.findTransaction((SIPRequest)request, true); - if (serverTransaction == null) { - serverTransaction = tcpSipProvider.getNewServerTransaction(request); - } - } else { - SipStackImpl stack = (SipStackImpl)udpSipProvider.getSipStack(); - serverTransaction = (SIPServerTransaction) stack.findTransaction((SIPRequest)request, true); - if (serverTransaction == null) { - serverTransaction = udpSipProvider.getNewServerTransaction(request); - } - } - } catch (TransactionAlreadyExistsException e) { - logger.error(e.getMessage()); - } catch (TransactionUnavailableException e) { - logger.error(e.getMessage()); - } - } - return serverTransaction; - } - - public AddressFactory getAddressFactory() { - try { - return SipFactory.getInstance().createAddressFactory(); - } catch (PeerUnavailableException e) { - e.printStackTrace(); - } - return null; - } - - public HeaderFactory getHeaderFactory() { - try { - return SipFactory.getInstance().createHeaderFactory(); - } catch (PeerUnavailableException e) { - e.printStackTrace(); - } - return null; - } - - public MessageFactory getMessageFactory() { - try { - return SipFactory.getInstance().createMessageFactory(); - } catch (PeerUnavailableException e) { - e.printStackTrace(); - } - return null; - } - - /*** - * 鍥炲鐘舵�佺爜 - * 100 trying - * 200 OK - * 400 - * 404 - * @param evt - * @throws SipException - * @throws InvalidArgumentException - * @throws ParseException - */ - public void responseAck(RequestEvent evt, int statusCode) throws SipException, InvalidArgumentException, ParseException { - Response response = getMessageFactory().createResponse(statusCode, evt.getRequest()); - ServerTransaction serverTransaction = getServerTransaction(evt); - serverTransaction.sendResponse(response); - if (statusCode >= 200) { - if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete(); - } - } - - public void responseAck(RequestEvent evt, int statusCode, String msg) throws SipException, InvalidArgumentException, ParseException { - Response response = getMessageFactory().createResponse(statusCode, evt.getRequest()); - response.setReasonPhrase(msg); - ServerTransaction serverTransaction = getServerTransaction(evt); - serverTransaction.sendResponse(response); - if (statusCode >= 200) { - if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete(); - } - } - - /** - * 鍥炲甯dp鐨�200 - * @param evt - * @param sdp - * @throws SipException - * @throws InvalidArgumentException - * @throws ParseException - */ - public void responseAck(RequestEvent evt, String sdp) throws SipException, InvalidArgumentException, ParseException { - Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest()); - SipFactory sipFactory = SipFactory.getInstance(); - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP"); - response.setContent(sdp, contentTypeHeader); - - SipURI sipURI = (SipURI)evt.getRequest().getRequestURI(); - - Address concatAddress = sipFactory.createAddressFactory().createAddress( - sipFactory.createAddressFactory().createSipURI(sipURI.getUser(), sipURI.getHost()+":"+sipURI.getPort() - )); - response.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress)); - getServerTransaction(evt).sendResponse(response); - } - - public Element getRootElement(RequestEvent evt) throws DocumentException { - return getRootElement(evt, "gb2312"); - } - public Element getRootElement(RequestEvent evt, String charset) throws DocumentException { - if (charset == null) charset = "gb2312"; - Request request = evt.getRequest(); - SAXReader reader = new SAXReader(); - reader.setEncoding(charset); - Document xml = reader.read(new ByteArrayInputStream(request.getRawContent())); - return xml.getRootElement(); - } } -- Gitblit v1.8.0