| | |
| | | import javax.sip.ResponseEvent;
|
| | | import javax.sip.SipProvider;
|
| | | import javax.sip.header.CSeqHeader;
|
| | | import javax.sip.header.CallIdHeader;
|
| | | import javax.sip.header.Header;
|
| | | import javax.sip.message.Request;
|
| | | import javax.sip.message.Response;
|
| | |
|
| | | import com.alibaba.fastjson.JSON;
|
| | | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
|
| | | import org.slf4j.Logger;
|
| | | import org.slf4j.LoggerFactory;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
|
| | | import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
|
| | | import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.*;
|
| | | import com.genersoft.iot.vmp.service.IPlayService;
|
| | | import org.springframework.beans.factory.annotation.Autowired;
|
| | | import org.springframework.beans.factory.annotation.Qualifier;
|
| | | import org.springframework.context.annotation.Lazy;
|
| | | import org.springframework.stereotype.Component;
|
| | |
|
| | | import com.genersoft.iot.vmp.conf.SipConfig;
|
| | |
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.CancelRequestProcessor;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.InviteRequestProcessor;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.MessageRequestProcessor;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.NotifyRequestProcessor;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.OtherRequestProcessor;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.RegisterRequestProcessor;
|
| | | import com.genersoft.iot.vmp.gb28181.transmit.request.impl.SubscribeRequestProcessor;
|
| | |
| | | import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
| | |
|
| | | /**
|
| | | * @Description:TODO(这里用一句话描述这个类的作用) |
| | | * @Description: SIP信令处理分配
|
| | | * @author: swwheihei
|
| | | * @date: 2020年5月3日 下午4:24:37
|
| | | */
|
| | | @Component
|
| | | public class SIPProcessorFactory {
|
| | |
|
| | | private final static Logger logger = LoggerFactory.getLogger(SIPProcessorFactory.class);
|
| | | // private final static Logger logger = LoggerFactory.getLogger(SIPProcessorFactory.class);
|
| | |
|
| | | @Autowired
|
| | | private SipConfig sipConfig;
|
| | |
| | |
|
| | | @Autowired
|
| | | private IVideoManagerStorager storager;
|
| | | |
| | |
|
| | | @Autowired
|
| | | private IRedisCatchStorage redisCatchStorage;
|
| | |
|
| | | @Autowired
|
| | | private EventPublisher publisher;
|
| | |
|
| | | @Autowired
|
| | | private SIPCommander cmder;
|
| | | |
| | |
|
| | | @Autowired
|
| | | private SIPCommanderFroPlatform cmderFroPlatform;
|
| | |
|
| | | @Autowired
|
| | | private RedisUtil redis;
|
| | |
|
| | |
| | |
|
| | | @Autowired
|
| | | private CancelResponseProcessor cancelResponseProcessor;
|
| | | |
| | |
|
| | | @Autowired
|
| | | @Lazy
|
| | | private RegisterResponseProcessor registerResponseProcessor;
|
| | |
|
| | |
|
| | | @Autowired
|
| | | private OtherResponseProcessor otherResponseProcessor;
|
| | |
|
| | | @Autowired
|
| | | private IPlayService playService;
|
| | |
|
| | | @Autowired
|
| | | private ZLMRTPServerFactory zlmrtpServerFactory;
|
| | |
|
| | |
|
| | | // 注:这里使用注解会导致循环依赖注入,暂用springBean
|
| | |
| | | processor.setRequestEvent(evt);
|
| | | processor.setTcpSipProvider(getTcpSipProvider());
|
| | | processor.setUdpSipProvider(getUdpSipProvider());
|
| | |
|
| | | processor.setCmder(cmder);
|
| | | processor.setCmderFroPlatform(cmderFroPlatform);
|
| | | processor.setPlayService(playService);
|
| | | processor.setStorager(storager);
|
| | | processor.setRedisCatchStorage(redisCatchStorage);
|
| | | processor.setZlmrtpServerFactory(zlmrtpServerFactory);
|
| | | return processor;
|
| | | } else if (Request.REGISTER.equals(method)) {
|
| | | RegisterRequestProcessor processor = new RegisterRequestProcessor();
|
| | |
| | | } else if (Request.ACK.equals(method)) {
|
| | | AckRequestProcessor processor = new AckRequestProcessor();
|
| | | processor.setRequestEvent(evt);
|
| | | processor.setRedisCatchStorage(redisCatchStorage);
|
| | | processor.setZlmrtpServerFactory(zlmrtpServerFactory);
|
| | | return processor;
|
| | | } else if (Request.BYE.equals(method)) {
|
| | | ByeRequestProcessor processor = new ByeRequestProcessor();
|
| | | processor.setRequestEvent(evt);
|
| | | processor.setRedisCatchStorage(redisCatchStorage);
|
| | | processor.setZlmrtpServerFactory(zlmrtpServerFactory);
|
| | | processor.setSIPCommander(cmder);
|
| | | return processor;
|
| | | } else if (Request.CANCEL.equals(method)) {
|
| | | CancelRequestProcessor processor = new CancelRequestProcessor();
|
| | | processor.setRequestEvent(evt);
|
| | | return processor;
|
| | | } else if (Request.MESSAGE.equals(method)) {
|
| | |
|
| | | MessageRequestProcessor processor = new MessageRequestProcessor();
|
| | | processor.setRequestEvent(evt);
|
| | | processor.setTcpSipProvider(getTcpSipProvider());
|
| | |
| | | processor.setDeferredResultHolder(deferredResultHolder);
|
| | | processor.setOffLineDetector(offLineDetector);
|
| | | processor.setCmder(cmder);
|
| | | processor.setCmderFroPlatform(cmderFroPlatform);
|
| | | processor.setStorager(storager);
|
| | | processor.setRedisCatchStorage(redisCatchStorage);
|
| | | return processor;
|
| | | } else if (Request.NOTIFY.equalsIgnoreCase(method)) {
|
| | | NotifyRequestProcessor processor = new NotifyRequestProcessor();
|
| | | processor.setRequestEvent(evt);
|
| | | processor.setTcpSipProvider(getTcpSipProvider());
|
| | | processor.setUdpSipProvider(getUdpSipProvider());
|
| | | processor.setPublisher(publisher);
|
| | | processor.setRedis(redis);
|
| | | processor.setDeferredResultHolder(deferredResultHolder);
|
| | | processor.setOffLineDetector(offLineDetector);
|
| | | processor.setCmder(cmder);
|
| | | processor.setStorager(storager);
|
| | | processor.setRedisCatchStorage(redisCatchStorage);
|
| | | return processor;
|
| | | } else {
|
| | | return new OtherRequestProcessor();
|
| | | OtherRequestProcessor processor = new OtherRequestProcessor();
|
| | | processor.setRequestEvent(evt);
|
| | | return processor;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | return byeResponseProcessor;
|
| | | } else if (Request.CANCEL.equals(method)) {
|
| | | return cancelResponseProcessor;
|
| | | }else if (Request.REGISTER.equals(method)) {
|
| | | return registerResponseProcessor;
|
| | | } else {
|
| | | return otherResponseProcessor;
|
| | | }
|