|  |  |  | 
|---|
|  |  |  | 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.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.service.IDeviceAlarmService; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.service.IMediaServerService; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.*; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.*; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.vmanager.service.IPlayService; | 
|---|
|  |  |  | import org.slf4j.Logger; | 
|---|
|  |  |  | import org.slf4j.LoggerFactory; | 
|---|
|  |  |  | // import org.slf4j.Logger; | 
|---|
|  |  |  | // import org.slf4j.LoggerFactory; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @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 SIPCommanderFroPlatform cmderFroPlatform; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IDeviceAlarmService deviceAlarmService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RedisUtil redis; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ZLMRTPServerFactory zlmrtpServerFactory; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IMediaServerService mediaServerService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 注:这里使用注解会导致循环依赖注入,暂用springBean | 
|---|
|  |  |  | private SipProvider tcpSipProvider; | 
|---|
|  |  |  | 
|---|
|  |  |  | processor.setCmderFroPlatform(cmderFroPlatform); | 
|---|
|  |  |  | processor.setPlayService(playService); | 
|---|
|  |  |  | processor.setStorager(storager); | 
|---|
|  |  |  | processor.setRedisCatchStorage(redisCatchStorage); | 
|---|
|  |  |  | processor.setZlmrtpServerFactory(zlmrtpServerFactory); | 
|---|
|  |  |  | processor.setMediaServerService(mediaServerService); | 
|---|
|  |  |  | return processor; | 
|---|
|  |  |  | } else if (Request.REGISTER.equals(method)) { | 
|---|
|  |  |  | RegisterRequestProcessor processor = new RegisterRequestProcessor(); | 
|---|
|  |  |  | 
|---|
|  |  |  | return processor; | 
|---|
|  |  |  | } else if (Request.SUBSCRIBE.equals(method)) { | 
|---|
|  |  |  | SubscribeRequestProcessor processor = new SubscribeRequestProcessor(); | 
|---|
|  |  |  | processor.setTcpSipProvider(getTcpSipProvider()); | 
|---|
|  |  |  | processor.setUdpSipProvider(getUdpSipProvider()); | 
|---|
|  |  |  | processor.setRequestEvent(evt); | 
|---|
|  |  |  | return processor; | 
|---|
|  |  |  | } else if (Request.ACK.equals(method)) { | 
|---|
|  |  |  | AckRequestProcessor processor = new AckRequestProcessor(); | 
|---|
|  |  |  | processor.setRequestEvent(evt); | 
|---|
|  |  |  | processor.setRedisCatchStorage(redisCatchStorage); | 
|---|
|  |  |  | processor.setZlmrtpServerFactory(zlmrtpServerFactory); | 
|---|
|  |  |  | processor.setMediaServerService(mediaServerService); | 
|---|
|  |  |  | return processor; | 
|---|
|  |  |  | } else if (Request.BYE.equals(method)) { | 
|---|
|  |  |  | ByeRequestProcessor processor = new ByeRequestProcessor(); | 
|---|
|  |  |  | processor.setRequestEvent(evt); | 
|---|
|  |  |  | processor.setRedisCatchStorage(redisCatchStorage); | 
|---|
|  |  |  | processor.setStorager(storager); | 
|---|
|  |  |  | processor.setZlmrtpServerFactory(zlmrtpServerFactory); | 
|---|
|  |  |  | processor.setSIPCommander(cmder); | 
|---|
|  |  |  | processor.setMediaServerService(mediaServerService); | 
|---|
|  |  |  | return processor; | 
|---|
|  |  |  | } else if (Request.CANCEL.equals(method)) { | 
|---|
|  |  |  | CancelRequestProcessor processor = new CancelRequestProcessor(); | 
|---|
|  |  |  | 
|---|
|  |  |  | processor.setOffLineDetector(offLineDetector); | 
|---|
|  |  |  | processor.setCmder(cmder); | 
|---|
|  |  |  | processor.setCmderFroPlatform(cmderFroPlatform); | 
|---|
|  |  |  | processor.setDeviceAlarmService(deviceAlarmService); | 
|---|
|  |  |  | processor.setStorager(storager); | 
|---|
|  |  |  | processor.setRedisCatchStorage(redisCatchStorage); | 
|---|
|  |  |  | return processor; | 
|---|