swwheihei
2020-07-16 29710b7cc154191ae56acf6af32ec70241886e78
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.genersoft.iot.vmp.gb28181.transmit.request.impl;
 
import javax.sip.RequestEvent;
import javax.sip.ServerTransaction;
 
import org.springframework.stereotype.Component;
 
import com.genersoft.iot.vmp.gb28181.SipLayer;
import com.genersoft.iot.vmp.gb28181.transmit.request.ISIPRequestProcessor;
 
/**    
 * @Description:处理INVITE请求
 * @author: songww
 * @date:   2020年5月3日 下午4:43:52     
 */
@Component
public class InviteRequestProcessor implements ISIPRequestProcessor {
 
    /**
     * 处理invite请求
     * 
     * @param request
     *            请求消息
     */ 
    @Override
    public void process(RequestEvent evt, SipLayer layer) {
        // TODO Auto-generated method stub
//        Request request = requestEvent.getRequest();
//
//        try {
//            // 发送100 Trying
//            ServerTransaction serverTransaction = getServerTransaction(requestEvent);
//            // 查询目标地址
//            URI reqUri = request.getRequestURI();
//            URI contactURI = currUser.get(reqUri);
//
//            System.out.println("processInvite rqStr=" + reqUri + " contact=" + contactURI);
//
//            // 根据Request uri来路由,后续的响应消息通过VIA来路由
//            Request cliReq = messageFactory.createRequest(request.toString());
//            cliReq.setRequestURI(contactURI);
//
//            HeaderFactory headerFactory = SipFactory.getInstance().createHeaderFactory();
//            Via callerVia = (Via) request.getHeader(Via.NAME);
//            Via via = (Via) headerFactory.createViaHeader(SIPMain.ip, SIPMain.port, "UDP",
//                    callerVia.getBranch() + "sipphone");
//
//            // FIXME 需要测试是否能够通过设置VIA头域来修改VIA头域值
//            cliReq.removeHeader(Via.NAME);
//            cliReq.addHeader(via);
//
//            // 更新contact的地址
//            ContactHeader contactHeader = headerFactory.createContactHeader();
//            Address address = SipFactory.getInstance().createAddressFactory()
//                    .createAddress("sip:sipsoft@" + SIPMain.ip + ":" + SIPMain.port);
//            contactHeader.setAddress(address);
//            contactHeader.setExpires(3600);
//            cliReq.setHeader(contactHeader);
//
//            clientTransactionId = sipProvider.getNewClientTransaction(cliReq);
//            clientTransactionId.sendRequest();
//
//            System.out.println("processInvite clientTransactionId=" + clientTransactionId.toString());
//
//            System.out.println("send invite to callee: " + cliReq);
//        } catch (TransactionUnavailableException e1) {
//            e1.printStackTrace();
//        } catch (SipException e) {
//            e.printStackTrace();
//        } catch (ParseException e) {
//            e.printStackTrace();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
 
}