UtlBoolean SipXMessageObserver::handleMessage(OsMsg& rMsg) { UtlBoolean bRet = FALSE ; if (rMsg.getMsgType() == OsMsg::OS_EVENT) { OsEventMsg* pEventMsg = (OsEventMsg*) &rMsg ; intptr_t eventType ; pEventMsg->getUserData(eventType) ; switch (eventType) { case SIPXMO_NOTIFICATION_STUN: handleStunOutcome(pEventMsg) ; bRet = TRUE ; break ; default: if (rMsg.getMsgSubType() == OsEventMsg::NOTIFY) { // this shouldn't be used at all assert(false); } break; } } else { SipMessage* pSipMessage = (SipMessage*) ((SipMessageEvent&)rMsg).getMessage() ; UtlString method; pSipMessage->getRequestMethod(&method); if (pSipMessage && pSipMessage->isResponse()) { int messageType = ((SipMessageEvent&)rMsg).getMessageStatus(); // ok, the phone has received a response to a sent INFO message. bRet = handleIncomingInfoStatus(pSipMessage, messageType); } else if (pSipMessage && !pSipMessage->isResponse()) { if (method == SIP_INFO_METHOD) { // ok, the phone has received an INFO message. bRet = handleIncomingInfoMessage(pSipMessage); } } } return bRet; }
UtlBoolean SipXMessageObserver::handleMessage(OsMsg& rMsg) { UtlBoolean bRet = FALSE ; switch (rMsg.getMsgType()) { case OsMsg::OS_EVENT: { OsEventMsg* pEventMsg = (OsEventMsg*) &rMsg ; void* eventType ; pEventMsg->getUserData(eventType) ; switch ((intptr_t)eventType) { case SIPXMO_NOTIFICATION_STUN: handleStunOutcome(pEventMsg) ; bRet = TRUE ; break ; } break ; } case OsMsg::PHONE_APP: { SipMessage* pSipMessage = (SipMessage*) ((SipMessageEvent&)rMsg).getMessage() ; UtlString method; pSipMessage->getRequestMethod(&method); if (pSipMessage && pSipMessage->isResponse()) { // ok, the phone has received a response to a sent INFO message. bRet = handleIncomingInfoStatus(pSipMessage); } else if (pSipMessage && !pSipMessage->isResponse()) { if (method == SIP_INFO_METHOD) { // ok, the phone has received an INFO message. bRet = handleIncomingInfoMessage(pSipMessage); } } break ; } default: break ; } return bRet; }