⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sipfrom.cxx

📁 SIP(Session Initiation Protocol)是由IETF定义
💻 CXX
📖 第 1 页 / 共 2 页
字号:
        tokenMap[copy] = copy2;    }}voidSipFrom::parse( const Data& fromdata){    Data data = fromdata;    try    {        scanSipFrom(data);    }    catch (SipFromParserException& exception)    {        if (SipParserMode::sipParserMode())        {            cpLog(LOG_ERR, "Failed to Decode in Constructor :o( ");            throw SipFromParserException(                exception.getDescription(),                __FILE__,                __LINE__, DECODE_FROM_FAILED            );        }    }    //everything allright.}voidSipFrom::decode( const Data& fromstr ){    try    {        parse(fromstr);    }    catch (SipFromParserException&)    {        if (SipParserMode::sipParserMode())        {            cpLog(LOG_ERR, "Failed to Decode in Constructor :o( ");            throw SipFromParserException(                "Parser Exception",                __FILE__,                __LINE__, DECODE_FROM_FAILED);        }    }}const bool SipFrom::operator<(const SipFrom& srcFrom) const{    bool urlLess = false;    if ( (fromUrl != 0) && (srcFrom.fromUrl != 0) )    {	urlLess = ( fromUrl->isLessThan(srcFrom.fromUrl));    }    else if ( (fromUrl == 0) && (srcFrom.fromUrl != 0) )    {	urlLess = true;    }    if (urlLess  ||        (tag < srcFrom.tag) ||        (token < srcFrom.token) ||        (qstring < srcFrom.qstring)    )    {        return true;    }    return false;}bool SipFrom::operator>(const SipFrom& srcFrom) const{    return (srcFrom < *this);}bool SipFrom::operator ==(const SipFrom& srcFrom) const{    bool equal = false;    if ( (fromUrl != 0) && (srcFrom.fromUrl != 0) )    {        equal = (fromUrl->areEqual(srcFrom.fromUrl));    }    else if ( (fromUrl == 0) && (srcFrom.fromUrl == 0) )    {	equal = true;    }    else    {        equal = false;    }    cpLog(LOG_DEBUG_STACK, " from urls match result: %s",           (equal ? "==" : "!=") );    equal = (equal && (tag == srcFrom.tag));    cpLog(LOG_DEBUG_STACK, " tags match result: %s", (equal ? "==" : "!=") );    equal = (equal && (tokenMap == srcFrom.tokenMap));    cpLog(LOG_DEBUG_STACK, "tokenMap match result: %s",           (equal ? "==" : "!=") );    cpLog(LOG_DEBUG_STACK, "final result of From operator == is: %s ",          ( equal ? "true" : "false" ) );    return equal;}intSipFrom::getPort() const{    int port=0;        if (fromUrl != 0)    {	if (fromUrl->getType() == SIP_URL)	{	    Sptr<SipUrl> sipUrl;	    sipUrl.dynamicCast(fromUrl);	    port = sipUrl->getPort().convertInt();	}    }    return port;}    voidSipFrom::setPort(const Data& newport){    if (urlType == TEL_URL)    {	return;    }    if (fromUrl == 0)    {	fromUrl = new SipUrl(false);    }    if (fromUrl != 0)    {	if (fromUrl->getType() == SIP_URL)	{	    Sptr<SipUrl> sipUrl;	    sipUrl.dynamicCast(fromUrl);	    sipUrl->setPort(newport);	}    }}Data SipFrom::encode() const{    //assign to data, and return.    Data sipFrom;        if (fromUrl != 0)    {	sipFrom = FROM;	sipFrom += SP;	Data dispName = getDisplayName();        sipFrom += dispName;	sipFrom += "<";	sipFrom += fromUrl->encode();	sipFrom+= ">";    }        Data tagparam = getTag();    if (tagparam.length() > 0)    {        sipFrom += ";";        sipFrom += "tag=";        sipFrom += tagparam;    }    TokenMapFrom::const_iterator i = tokenMap.begin();    if (i != tokenMap.end())    {        sipFrom += ";";    }    while (i != tokenMap.end())    {        Data token1 = i->first;        Data tokenValue1 = i->second;        sipFrom += token1;        if (tokenValue1.length() > 0)        {            sipFrom += "=";            sipFrom += tokenValue1;        }        ++i;        if ( i != tokenMap.end())        {            sipFrom += ";";        }    }  //end while    //other than basic    sipFrom += CRLF;        return sipFrom;}void SipFrom::setTokenDetails(const Data& intoken, const Data& tokenValue){    tokenMap[intoken] = tokenValue;}Sptr < SipFrom::TokenMapFrom >SipFrom::getTokenDetails() const{    Sptr < SipFrom::TokenMapFrom > dupMap = new TokenMapFrom(tokenMap) ;    return dupMap;}Data SipFrom::getTokenValue(const Data& intoken) const{    Data ret;    TokenMapFrom::const_iterator check = tokenMap.find(intoken);    if (check != tokenMap.end())    {        ret = check -> second;    }    return ret;}void SipFrom::setUser(const Data& newuser){    if (fromUrl == 0)    {	if (urlType == SIP_URL)	{	    fromUrl = new SipUrl();	}	else if (urlType == TEL_URL)	{	    fromUrl = new TelUrl();	}    }    //HERE, the user could be user for TelUrl. We need to be able to    //identify it some how, Maybe, when we form the From empty object, pass this in the constructor.            if (fromUrl != 0)    {	fromUrl->setUserValue(newuser);    }    //display name defaulted to user.    if (displayName.length() == 0)    {        displayName = newuser;    }}Data SipFrom::getUser() const{    Data user;    if (fromUrl != 0)    {	user = fromUrl->getUserValue();    }    return user;}    void SipFrom::setDisplayName(const Data& name){    displayName = name;}    const Data& SipFrom::getDisplayName() const{    return displayName;}    voidSipFrom::setHost(const Data& newhost){    if (urlType == TEL_URL)    {	return;    }    if (fromUrl == 0)    {	fromUrl = new SipUrl();    }    if (fromUrl != 0)    {    	if (fromUrl->getType() == SIP_URL)	{	    Sptr<SipUrl> sipUrl;	    sipUrl.dynamicCast(fromUrl);	    sipUrl->setHost(newhost);	}    }}DataSipFrom::getHost() const{    Data host;    if (fromUrl != 0)    {    	if (fromUrl->getType() == SIP_URL)	{	    Sptr<SipUrl> sipUrl;	    sipUrl.dynamicCast(fromUrl);	    host = sipUrl->getHost();	}    }    return host;}const Data&SipFrom::getTag() const{    return tag;}voidSipFrom::setTag( const Data& newtag ){    tag = newtag;}Sptr <BaseUrl>SipFrom::getUrl() const{    return duplicateUrl(fromUrl, true);}voidSipFrom::setUrl( Sptr <BaseUrl> newfromUrl ){    fromUrl = duplicateUrl(newfromUrl);}SipHeader*SipFrom::duplicate() const{    return new SipFrom(*this);}boolSipFrom::compareSipHeader(SipHeader* msg) const{    SipFrom* otherMsg = dynamic_cast<SipFrom*>(msg);    if(otherMsg != 0)    {	return (*this == *otherMsg);    }    else    {	return false;    }}/* Local Variables: *//* c-file-style: "stroustrup" *//* indent-tabs-mode: nil *//* c-file-offsets: ((access-label . -) (inclass . ++)) *//* c-basic-offset: 4 *//* End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -