Ignore:
Timestamp:
Nov 29, 2013 5:56:02 AM (10 years ago)
Author:
ming
Message:

Re #1519: Add Call API in pjsua2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/pjsua2/pjsip/src/pjsua2/siptypes.cpp

    r4658 r4663  
    324324void SipRxData::fromPj(pjsip_rx_data &rdata) 
    325325{ 
     326    char straddr[PJ_INET6_ADDRSTRLEN+10]; 
     327 
    326328    info        = pjsip_rx_data_get_info(&rdata); 
    327329    wholeMsg    = string(rdata.msg_info.msg_buf, rdata.msg_info.len); 
    328     srcIp       = rdata.pkt_info.src_name; 
    329     srcPort     = rdata.pkt_info.src_port; 
     330    pj_sockaddr_print(&rdata.pkt_info.src_addr, straddr, sizeof(straddr), 3); 
     331    srcAddress  = straddr; 
     332    pjRxData    = (void *)&rdata; 
    330333} 
    331334 
     
    424427/////////////////////////////////////////////////////////////////////////////// 
    425428 
     429void SipEvent::fromPj(const pjsip_event &ev) 
     430{ 
     431    type = ev.type; 
     432    if (type == PJSIP_EVENT_TIMER) { 
     433        body.timer.entry = ev.body.timer.entry; 
     434    } else if (type == PJSIP_EVENT_TSX_STATE) { 
     435        body.tsxState.prevState = (pjsip_tsx_state_e) 
     436        ev.body.tsx_state.prev_state; 
     437        body.tsxState.tsx.fromPj(*ev.body.tsx_state.tsx); 
     438        if (body.tsxState.type == PJSIP_EVENT_TX_MSG) { 
     439            body.tsxState.src.tdata.fromPj(*ev.body.tsx_state.src.tdata); 
     440        } else if (body.tsxState.type == PJSIP_EVENT_RX_MSG) { 
     441            body.tsxState.src.rdata.fromPj(*ev.body.tsx_state.src.rdata); 
     442        } else if (body.tsxState.type == PJSIP_EVENT_TRANSPORT_ERROR) { 
     443            body.tsxState.src.status = ev.body.tsx_state.src.status; 
     444        } else if (body.tsxState.type == PJSIP_EVENT_TIMER) { 
     445            body.tsxState.src.timer = ev.body.tsx_state.src.timer; 
     446        } else if (body.tsxState.type == PJSIP_EVENT_USER) { 
     447            body.tsxState.src.data = ev.body.tsx_state.src.data; 
     448        } 
     449    } else if (type == PJSIP_EVENT_TX_MSG) { 
     450        body.txMsg.tdata.fromPj(*ev.body.tx_msg.tdata); 
     451    } else if (type == PJSIP_EVENT_RX_MSG) { 
     452        body.rxMsg.rdata.fromPj(*ev.body.rx_msg.rdata); 
     453    } else if (type == PJSIP_EVENT_TRANSPORT_ERROR) { 
     454        body.txError.tdata.fromPj(*ev.body.tx_error.tdata); 
     455        body.txError.tsx.fromPj(*ev.body.tx_error.tsx); 
     456    } else if (type == PJSIP_EVENT_USER) { 
     457        body.user.user1 = ev.body.user.user1; 
     458    } 
     459    pjEvent = (void *)&ev; 
     460} 
     461 
     462void SipTxData::fromPj(pjsip_tx_data &tdata) 
     463{ 
     464    char straddr[PJ_INET6_ADDRSTRLEN+10]; 
     465     
     466    info        = pjsip_tx_data_get_info(&tdata); 
     467    pjsip_tx_data_encode(&tdata); 
     468    wholeMsg    = string(tdata.buf.start, tdata.buf.end - tdata.buf.start); 
     469    pj_sockaddr_print(&tdata.tp_info.dst_addr, straddr, sizeof(straddr), 3); 
     470    dstAddress  = straddr; 
     471    pjTxData    = (void *)&tdata; 
     472} 
     473 
     474void SipTransaction::fromPj(pjsip_transaction &tsx) 
     475{ 
     476    this->role          = tsx.role; 
     477    this->method        = pj2Str(tsx.method.name); 
     478    this->statusCode    = tsx.status_code; 
     479    this->statusText    = pj2Str(tsx.status_text); 
     480    this->lastTx.fromPj(*tsx.last_tx); 
     481    this->pjTransaction = (void *)&tsx; 
     482} 
     483 
     484bool SipTxOption::isEmpty() const 
     485{ 
     486    return (targetUri == "" && headers.size() == 0 && contentType == "" && 
     487            msgBody == "" && multipartContentType.type == "" && 
     488            multipartContentType.subType == "" && multipartParts.size() == 0); 
     489} 
     490 
    426491void SipTxOption::fromPj(const pjsua_msg_data &prm) throw(Error) 
    427492{ 
     
    475540    } 
    476541} 
     542 
     543////////////////////////////////////////////////////////////////////////////// 
     544 
     545SendInstantMessageParam::SendInstantMessageParam() 
     546: contentType("text/plain"), content(""), userData(NULL) 
     547{ 
     548} 
     549 
     550SendTypingIndicationParam::SendTypingIndicationParam() 
     551: isTyping(false) 
     552{ 
     553} 
Note: See TracChangeset for help on using the changeset viewer.