| | |
| | | @Autowired |
| | | private SipSubscribe sipSubscribe; |
| | | |
| | | @Autowired |
| | | @Qualifier(value = "taskExecutor") |
| | | private ThreadPoolTaskExecutor poolTaskExecutor; |
| | | // @Autowired |
| | | // @Qualifier(value = "taskExecutor") |
| | | // private ThreadPoolTaskExecutor poolTaskExecutor; |
| | | |
| | | /** |
| | | * 添加 request订阅 |
| | |
| | | * @param requestEvent RequestEvent事件 |
| | | */ |
| | | @Override |
| | | @Async |
| | | public void processRequest(RequestEvent requestEvent) { |
| | | |
| | | poolTaskExecutor.execute(() -> { |
| | | String method = requestEvent.getRequest().getMethod(); |
| | | ISIPRequestProcessor sipRequestProcessor = requestProcessorMap.get(method); |
| | | if (sipRequestProcessor == null) { |
| | | logger.warn("不支持方法{}的request", method); |
| | | return; |
| | | } |
| | | requestProcessorMap.get(method).process(requestEvent); |
| | | }); |
| | | String method = requestEvent.getRequest().getMethod(); |
| | | ISIPRequestProcessor sipRequestProcessor = requestProcessorMap.get(method); |
| | | if (sipRequestProcessor == null) { |
| | | logger.warn("不支持方法{}的request", method); |
| | | return; |
| | | } |
| | | requestProcessorMap.get(method).process(requestEvent); |
| | | |
| | | } |
| | | |
| | |
| | | * @param responseEvent responseEvent事件 |
| | | */ |
| | | @Override |
| | | @Async |
| | | public void processResponse(ResponseEvent responseEvent) { |
| | | logger.debug(responseEvent.getResponse().toString()); |
| | | // CSeqHeader cseqHeader = (CSeqHeader) responseEvent.getResponse().getHeader(CSeqHeader.NAME); |
| | | // String method = cseqHeader.getMethod(); |
| | | // ISIPResponseProcessor sipRequestProcessor = responseProcessorMap.get(method); |
| | | // if (sipRequestProcessor == null) { |
| | | // logger.warn("不支持方法{}的response", method); |
| | | // return; |
| | | // } |
| | | // sipRequestProcessor.process(responseEvent); |
| | | |
| | | poolTaskExecutor.execute(() -> { |
| | | Response response = responseEvent.getResponse(); |
| | | logger.debug(responseEvent.getResponse().toString()); |
| | | int status = response.getStatusCode(); |
| | | if (((status >= 200) && (status < 300)) || status == 401) { // Success! |
| | | Response response = responseEvent.getResponse(); |
| | | logger.debug(responseEvent.getResponse().toString()); |
| | | int status = response.getStatusCode(); |
| | | if (((status >= 200) && (status < 300)) || status == 401) { // Success! |
| | | // ISIPResponseProcessor processor = processorFactory.createResponseProcessor(evt); |
| | | CSeqHeader cseqHeader = (CSeqHeader) responseEvent.getResponse().getHeader(CSeqHeader.NAME); |
| | | String method = cseqHeader.getMethod(); |
| | | ISIPResponseProcessor sipRequestProcessor = responseProcessorMap.get(method); |
| | | if (sipRequestProcessor != null) { |
| | | sipRequestProcessor.process(responseEvent); |
| | | } |
| | | if (responseEvent.getResponse() != null && sipSubscribe.getOkSubscribesSize() > 0 ) { |
| | | CallIdHeader callIdHeader = (CallIdHeader)responseEvent.getResponse().getHeader(CallIdHeader.NAME); |
| | | if (callIdHeader != null) { |
| | | SipSubscribe.Event subscribe = sipSubscribe.getOkSubscribe(callIdHeader.getCallId()); |
| | | if (subscribe != null) { |
| | | SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(responseEvent); |
| | | subscribe.response(eventResult); |
| | | } |
| | | } |
| | | } |
| | | } else if ((status >= 100) && (status < 200)) { |
| | | // 增加其它无需回复的响应,如101、180等 |
| | | } else { |
| | | logger.warn("接收到失败的response响应!status:" + status + ",message:" + response.getReasonPhrase()/* .getContent().toString()*/); |
| | | if (responseEvent.getResponse() != null && sipSubscribe.getErrorSubscribesSize() > 0 ) { |
| | | CallIdHeader callIdHeader = (CallIdHeader)responseEvent.getResponse().getHeader(CallIdHeader.NAME); |
| | | if (callIdHeader != null) { |
| | | SipSubscribe.Event subscribe = sipSubscribe.getErrorSubscribe(callIdHeader.getCallId()); |
| | | if (subscribe != null) { |
| | | SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(responseEvent); |
| | | subscribe.response(eventResult); |
| | | } |
| | | CSeqHeader cseqHeader = (CSeqHeader) responseEvent.getResponse().getHeader(CSeqHeader.NAME); |
| | | String method = cseqHeader.getMethod(); |
| | | ISIPResponseProcessor sipRequestProcessor = responseProcessorMap.get(method); |
| | | if (sipRequestProcessor != null) { |
| | | sipRequestProcessor.process(responseEvent); |
| | | } |
| | | if (responseEvent.getResponse() != null && sipSubscribe.getOkSubscribesSize() > 0 ) { |
| | | CallIdHeader callIdHeader = (CallIdHeader)responseEvent.getResponse().getHeader(CallIdHeader.NAME); |
| | | if (callIdHeader != null) { |
| | | SipSubscribe.Event subscribe = sipSubscribe.getOkSubscribe(callIdHeader.getCallId()); |
| | | if (subscribe != null) { |
| | | SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(responseEvent); |
| | | subscribe.response(eventResult); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | } else if ((status >= 100) && (status < 200)) { |
| | | // 增加其它无需回复的响应,如101、180等 |
| | | } else { |
| | | logger.warn("接收到失败的response响应!status:" + status + ",message:" + response.getReasonPhrase()/* .getContent().toString()*/); |
| | | if (responseEvent.getResponse() != null && sipSubscribe.getErrorSubscribesSize() > 0 ) { |
| | | CallIdHeader callIdHeader = (CallIdHeader)responseEvent.getResponse().getHeader(CallIdHeader.NAME); |
| | | if (callIdHeader != null) { |
| | | SipSubscribe.Event subscribe = sipSubscribe.getErrorSubscribe(callIdHeader.getCallId()); |
| | | if (subscribe != null) { |
| | | SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(responseEvent); |
| | | subscribe.response(eventResult); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |