#include "SIPParserInclude\CSIPMessageParser.h"
#include "HHCoreInclude\CHHString.h"
namespace SIPParserFW
{
CSIPMessageParser::CSIPMessageParser()
: m_pSIPMethodData( NULL ), m_pSIPRequestURIParser( NULL ), m_pSIPVersionData( NULL ),
m_pSIPStatusCodeData( NULL ), m_pSIPReasonPhraseData( NULL ),
m_pSIPAcceptParser( NULL ), m_pSIPAcceptEncodingParser( NULL ), m_pSIPAcceptLanguageParser( NULL ),
m_pSIPAlertInfoParser( NULL ), m_pSIPAllowParser( NULL ), m_pSIPAuthenticationInfoParser( NULL ),
m_pSIPAuthorizationParser( NULL ), m_pSIPCallIDParser( NULL ), m_pSIPCallInfoParser( NULL ),
m_pSIPContactParser( NULL ), m_pSIPContentDispositionParser( NULL ), m_pSIPContentEncodingParser( NULL ),
m_pSIPContentLanguageParser( NULL ), m_pSIPContentLengthParser( NULL ), m_pSIPContentTypeParser( NULL ),
m_pSIPCSeqParser( NULL ), m_pSIPDateParser( NULL ), m_pSIPErrorInfoParser( NULL ), m_pSIPExpiresParser( NULL ),
m_pSIPFromParser( NULL ), m_pSIPInReplyToParser( NULL ), m_pSIPMaxForwardsParser( NULL ), m_pSIPMimeVersionParser( NULL ),
m_pSIPMinExpiresParser( NULL ), m_pSIPOrganizationParser( NULL ), m_pSIPPriorityParser( NULL ), m_pSIPProxyAuthenticateParser( NULL ),
m_pSIPProxyAuthorizationParser( NULL ), m_pSIPProxyRequireParser( NULL ), m_pSIPRecordRouteParser( NULL ),
m_pSIPReplyToParser( NULL ), m_pSIPRequireParser( NULL ), m_pSIPRetryAfterParser( NULL ), m_pSIPRouteParser( NULL ),
m_pSIPServerParser( NULL ), m_pSIPSubjectParser( NULL ), m_pSIPSupportedParser( NULL ), m_pSIPTimestampParser( NULL ),
m_pSIPToParser( NULL ), m_pSIPUnSupportedParser( NULL ), m_pSIPUserAgentParser( NULL ), m_pSIPViaParser( NULL ),
m_pSIPWarningParser( NULL ), m_pSIPWWWAuthenticateParser( NULL ),
m_pSIPMessageBodyData( NULL )
{
ReleaseCSIPMessageParserData() ;
}
CSIPMessageParser::CSIPMessageParser( const CSIPMessageParser &SIPMessageParser )
: m_pSIPMethodData( NULL ), m_pSIPRequestURIParser( NULL ), m_pSIPVersionData( NULL ),
m_pSIPStatusCodeData( NULL ), m_pSIPReasonPhraseData( NULL ),
m_pSIPAcceptParser( NULL ), m_pSIPAcceptEncodingParser( NULL ), m_pSIPAcceptLanguageParser( NULL ),
m_pSIPAlertInfoParser( NULL ), m_pSIPAllowParser( NULL ), m_pSIPAuthenticationInfoParser( NULL ),
m_pSIPAuthorizationParser( NULL ), m_pSIPCallIDParser( NULL ), m_pSIPCallInfoParser( NULL ),
m_pSIPContactParser( NULL ), m_pSIPContentDispositionParser( NULL ), m_pSIPContentEncodingParser( NULL ),
m_pSIPContentLanguageParser( NULL ), m_pSIPContentLengthParser( NULL ), m_pSIPContentTypeParser( NULL ),
m_pSIPCSeqParser( NULL ), m_pSIPDateParser( NULL ), m_pSIPErrorInfoParser( NULL ), m_pSIPExpiresParser( NULL ),
m_pSIPFromParser( NULL ), m_pSIPInReplyToParser( NULL ), m_pSIPMaxForwardsParser( NULL ), m_pSIPMimeVersionParser( NULL ),
m_pSIPMinExpiresParser( NULL ), m_pSIPOrganizationParser( NULL ), m_pSIPPriorityParser( NULL ), m_pSIPProxyAuthenticateParser( NULL ),
m_pSIPProxyAuthorizationParser( NULL ), m_pSIPProxyRequireParser( NULL ), m_pSIPRecordRouteParser( NULL ),
m_pSIPReplyToParser( NULL ), m_pSIPRequireParser( NULL ), m_pSIPRetryAfterParser( NULL ), m_pSIPRouteParser( NULL ),
m_pSIPServerParser( NULL ), m_pSIPSubjectParser( NULL ), m_pSIPSupportedParser( NULL ), m_pSIPTimestampParser( NULL ),
m_pSIPToParser( NULL ), m_pSIPUnSupportedParser( NULL ), m_pSIPUserAgentParser( NULL ), m_pSIPViaParser( NULL ),
m_pSIPWarningParser( NULL ), m_pSIPWWWAuthenticateParser( NULL ),
m_pSIPMessageBodyData( NULL )
{
ReleaseCSIPMessageParserData() ;
CopyCSIPMessageParserData( SIPMessageParser ) ;
}
CSIPMessageParser::~CSIPMessageParser()
{
ReleaseCSIPMessageParserData() ;
}
CSIPMessageParser& CSIPMessageParser::operator=( const CSIPMessageParser &SIPMessageParser )
{
ReleaseCSIPMessageParserData() ;
ASIPParser::operator=( SIPMessageParser ) ;
CopyCSIPMessageParserData( SIPMessageParser ) ;
return *this ;
}
void CSIPMessageParser::ReleaseCSIPMessageParserData()
{
if( m_pSIPMethodData != NULL )
{
m_pSIPMethodData->Release() ;
m_pSIPMethodData = NULL ;
}
if( m_pSIPRequestURIParser != NULL )
{
m_pSIPRequestURIParser->Release() ;
m_pSIPRequestURIParser = NULL ;
}
if( m_pSIPVersionData != NULL )
{
m_pSIPVersionData->Release() ;
m_pSIPVersionData = NULL ;
}
if( m_pSIPStatusCodeData != NULL )
{
m_pSIPStatusCodeData->Release() ;
m_pSIPStatusCodeData = NULL ;
}
if( m_pSIPReasonPhraseData != NULL )
{
m_pSIPReasonPhraseData->Release() ;
m_pSIPReasonPhraseData = NULL ;
}
if( m_pSIPAcceptParser != NULL )
{
m_pSIPAcceptParser->Release() ;
m_pSIPAcceptParser = NULL ;
}
if( m_pSIPAcceptEncodingParser != NULL )
{
m_pSIPAcceptEncodingParser->Release() ;
m_pSIPAcceptEncodingParser = NULL ;
}
if( m_pSIPAcceptLanguageParser != NULL )
{
m_pSIPAcceptLanguageParser->Release() ;
m_pSIPAcceptLanguageParser = NULL ;
}
if( m_pSIPAlertInfoParser != NULL )
{
m_pSIPAlertInfoParser->Release() ;
m_pSIPAlertInfoParser = NULL ;
}
if( m_pSIPAllowParser != NULL )
{
m_pSIPAllowParser->Release() ;
m_pSIPAllowParser = NULL ;
}
if( m_pSIPAuthenticationInfoParser != NULL )
{
m_pSIPAuthenticationInfoParser->Release() ;
m_pSIPAuthenticationInfoParser = NULL ;
}
if( m_pSIPAuthorizationParser != NULL )
{
m_pSIPAuthorizationParser->Release() ;
m_pSIPAuthorizationParser = NULL ;
}
if( m_pSIPCallIDParser != NULL )
{
m_pSIPCallIDParser->Release() ;
m_pSIPCallIDParser = NULL ;
}
if( m_pSIPCallInfoParser != NULL )
{
m_pSIPCallInfoParser->Release() ;
m_pSIPCallInfoParser = NULL ;
}
if( m_pSIPContactParser != NULL )
{
m_pSIPContactParser->Release() ;
m_pSIPContactParser = NULL ;
}
if( m_pSIPContentDispositionParser != NULL )
{
m_pSIPContentDispositionParser->Release() ;
m_pSIPContentDispositionParser = NULL ;
}
if( m_pSIPContentEncodingParser != NULL )
{
m_pSIPContentEncodingParser->Release() ;
m_pSIPContentEncodingParser = NULL ;
}
if( m_pSIPContentLanguageParser != NULL )
{
m_pSIPContentLanguageParser->Release() ;
m_pSIPContentLanguageParser = NULL ;
}
if( m_pSIPContentLengthParser != NULL )
{
m_pSIPContentLengthParser->Release() ;
m_pSIPContentLengthParser = NULL ;
}
if( m_pSIPContentTypeParser != NULL )
{
m_pSIPContentTypeParser->Release() ;
m_pSIPContentTypeParser = NULL ;
}
if( m_pSIPCSeqParser != NULL )
{
m_pSIPCSeqParser->Release() ;
m_pSIPCSeqParser = NULL ;
}
if( m_pSIPDateParser != NULL )
{
m_pSIPDateParser->Release() ;
m_pSIPDateParser = NULL ;
}
if( m_pSIPErrorInfoParser != NULL )
{
m_pSIPErrorInfoParser->Release() ;
m_pSIPErrorInfoParser = NULL ;
}
if( m_pSIPExpiresParser != NULL )
{
m_pSIPExpiresParser->Release() ;
m_pSIPExpiresParser = NULL ;
}
if( m_pSIPFromParser != NULL )
{
m_pSIPFromParser->Release() ;
m_pSIPFromParser = NULL ;
}
if( m_pSIPInReplyToParser != NULL )
{
m_pSIPInReplyToParser->Release() ;
m_pSIPInReplyToParser = NULL ;
}
if( m_pSIPMaxForwardsParser != NULL )
{
m_pSIPMaxForwardsParser->Release() ;
m_pSIPMaxForwardsParser = NULL ;
}
if( m_pSIPMimeVersionParser != NULL )
{
m_pSIPMimeVersionParser->Release() ;
m_pSIPMimeVersionParser = NULL ;
}
if( m_pSIPMinExpiresParser != NULL )
{
m_pSIPMinExpiresParser->Release() ;
m_pSIPMinExpiresParser = NULL ;
}
if( m_pSIPOrganizationParser != NULL )
{
m_pSIPOrganizationParser->Release() ;
m_pSIPOrganizationParser = NULL ;
}
if( m_pSIPPriorityParser != NULL )
{
m_pSIPPriorityParser->Release() ;
m_pSIPPriorityParser = NULL ;
}
if( m_pSIPProxyAuthenticateParser != NULL )
{
m_pSIPProxyAuthenticateParser->Release() ;
m_pSIPProxyAuthenticateParser = NULL ;
}
if( m_pSIPProxyAuthorizationParser != NULL )
{
m_pSIPProxyAuthorizationParser->Release() ;
m_pSIPProxyAuthorizationParser = NULL ;
}
if( m_pSIPProxyRequireParser != NULL )
{
m_pSIPProxyRequireParser->Release() ;
m_pSIPProxyRequireParser = NULL ;
}
if( m_pSIPRecordRouteParser != NULL )
{
m_pSIPRecordRouteParser->Release() ;
m_pSIPRecordRouteParser = NULL ;
}
if( m_pSIPReplyToParser != NULL )
{
m_pSIPReplyToParser->Release() ;
m_pSIPReplyToParser = NULL ;
}
if( m_pSIPRequireParser != NULL )
{
m_pSIPRequireParser->Release() ;
m_pSIPRequireParser = NULL ;
}
if( m_pSIPRetryAfterParser != NULL )
{
m_pSIPRetryAfterParser->Release() ;
m_pSIPRetryAfterParser = NULL ;
}
if( m_pSIPRouteParser != NULL )
{
m_pSIPRouteParser->Release() ;
m_pSIPRouteParser = NULL ;
}
if( m_pSIPServerParser != NULL )
{
m_pSIPServerParser->Release() ;
m_pSIPServerParser = NULL ;
}
if( m_pSIPSubjectParser != NULL )
{
m_pSIPSubjectParser->Release() ;
m_pSIPSubjectParser = NULL ;
}
if( m_pSIPSupportedParser != NULL )
{
m_pSIPSupportedParser->Release() ;
m_pSIPSupportedParser = NULL ;
}
if( m_pSIPTimestampParser != NULL )
{
m_pSIPTimestampParser->Release() ;
m_pSIPTimestampParser = NULL ;
}
if( m_pSIPToParser != NULL )
{
m_pSIPToParser->Release() ;
m_pSIPToParser = NULL ;
}
if( m_pSIPUnSupportedParser != NULL )
{
m_pSIPUnSupportedParser->Release() ;
m_pSIPUnSupportedParser = NULL ;
}
if( m_pSIPUserAgentParser != NULL )
{
m_pSIPUserAgentParser->Release() ;
m_pSIPUserAgentParser = NULL ;
}
if( m_pSIPViaParser != NULL )
{
m_pSIPViaParser->Release() ;
m_pSIPViaParser = NULL ;
}
if( m_pSIPWarningParser != NULL )
{
m_pSIPWarningParser->Release() ;
m_pSIPWarningParser = NULL ;
}
if( m_pSIPWWWAuthenticateParser != NULL )
{
m_pSIPWWWAuthenticateParser->Release() ;
m_pSIPWWWAuthenticateParser = NULL ;
}
if( m_pSIPMessageBodyData != NULL )
{
m_pSIPMessageBodyData->Release() ;
m_pSIPMessageBodyData = NULL ;
}
}
void CSIPMessageParser::CopyCSIPMessageParserData( const CSIPMessageParser &SIPMessageParser )
{
m_pSIPMethodData = ( ( SIPMessageParser.m_pSIPMethodData != NULL )
? dynamic_cast< CMessageData* > ( SIPMessageParser.m_pSIPMethodData->Copy() ) : NULL ) ;
m_pSIPRequestURIParser = ( ( SIPMessageParser.m_pSIPRequestURIParser != NULL )
? dynamic_cast< CSIPURIParser* > ( SIPMessageParser.m_pSIPRequestURIParser->Copy() ) : NULL ) ;
m_pSIPVersionData = ( ( SIPMessageParser.m_pSIPVersionData != NULL )
? dynamic_cast< CMessageData* > ( SIPMessageParser.m_pSIPVersionData->Copy() ) : NULL ) ;
m_pSIPStatusCodeData = ( ( SIPMessageParser.m_pSIPStatusCodeData != NULL )
? dynamic_cast< CMessageData* > ( SIPMessageParser.m_pSIPStatusCodeData->Copy() ) : NULL ) ;
m_pSIPReasonPhraseData = ( ( SIPMessageParser.m_pSIPReasonPhraseData != NULL )
? dynamic_cast< CMessageData* > ( SIPMessageParser.m_pSIPReasonPhraseData->Copy() ) : NULL ) ;
m_pSIPAcceptParser = ( ( SIPMessageParser.m_pSIPAcceptParser != NULL )
? dynamic_cast< CSIPAcceptParser* > ( SIPMessageParser.m_pSIPAcceptParser->Copy() ) : NULL ) ;
m_pSIPAcceptEncodingParser = ( ( SIPMessageParser.m_pSIPAcceptEncodingParser != NULL )
? dynamic_cast< CSIPAcceptEncodingParser* > ( SIPMessageParser.m_pSIPAcceptEncodingParser->Copy() ) : NULL ) ;
m_pSIPAcceptLanguageParser = ( ( SIPMessageParser.m_pSIPAcceptLanguageParser != NULL )
? dynamic_cast< CSIPAcceptLanguageParser* > ( SIPMessageParser.m_pSIPAcceptLanguageParser->Copy() ) : NULL ) ;
m_pSIPAlertInfoParser = ( ( SIPMessageParser.m_pSIPAlertInfoParser != NULL )
? dynamic_cast< CSIPAlertInfoParser* > ( SIPMessageParser.m_pSIPAlertInfoParser->Copy() ) : NULL ) ;
m_pSIPAllowParser = ( ( SIPMessageParser.m_pSIPAllowParser != NULL )
? dynamic_cast< CSIPAllowParser* > ( SIPMessageParser.m_pSIPAllowParser->Copy() ) : NULL ) ;
m_pSIPAuthenticationInfoParser = ( ( SIPMessageParser.m_pSIPAuthenticationInfoParser != NULL )
? dynamic_cast< CSIPAuthenticationInfoParser* > ( SIPMessageParser.m_pSIPAuthenticationInfoParser->Copy() ) : NULL ) ;
m_pSIPAuthorizationParser = ( ( SIPMessageParser.m_pSIPAuthorizationParser != NULL )
? dynamic_cast< CSIPAuthorizationParser* > ( SIPMessageParser.m_pSIPAuthorizationParser->Copy() ) : NULL ) ;
m_pSIPCallIDParser = ( ( SIPMessageParser.m_pSIPCallIDParser != NULL )
? dynamic_cast< CSIPCallIDParser* > ( SIPMessageParser.m_pSIPCallIDParser->Copy() ) : NULL ) ;
m_pSIPCallInfoParser = ( ( SIPMessageParser.m_pSIPCallInfoParser != NULL )
? dynamic_cast< CSIPCallInfoParser* > ( SIPMessageParser.m_pSIPCallInfoParser->Copy() ) : NULL ) ;
m_pSIPContactParser = ( ( SIPMessageParser.m_pSIPContactParser != NULL )
? dynamic_cast< CSIPContactParser* > ( SIPMessageParser.m_pSIPContactParser->Copy() ) : NULL ) ;
m_pSIPContentDispositionParser = ( ( SIPMessageParser.m_pSIPContentDispositionParser != NULL )
? dynamic_cast< CSIPContentDispositionParser* > ( SIPMessageParser.m_pSIPContentDispositionParser->Copy() ) : NULL ) ;
m_pSIPContentEncodingParser = ( ( SIPMessageParser.m_pSIPContentEncodingParser != NULL )
? dynamic_cast< CSIPContentEncodingParser* > ( SIPMessageParser.m_pSIPContentEncodingParser->Copy() ) : NULL ) ;
m_pSIPContentLanguageParser = ( ( SIPMessageParser.m_pSIPContentLanguageParser != NULL )
? dynamic_cast< CSIPContentLanguageParser* > ( SIPMessageParser.m_pSIPContentLanguageParser->Copy() ) : NULL ) ;
m_pSIPContentLengthParser = ( ( SIPMessageParser.m_pSIPContentLengthParser != NULL )
? dynamic_cast< CSIPContentLengthParser* > ( SIPMessageParser.m_pSIPContentLengthParser->Copy() ) : NULL ) ;
m_pSIPContentTypeParser = ( ( SIPMessageParser.m_pSIPContentTypeParser != NULL )
? dynamic_cast< CSIPContentTypeParser* > ( SIPMessageParser.m_pSIPContentTypeParser->Copy() ) : NULL ) ;
m_pSIPCSeqParser = ( ( SIPMessageParser.m_pSIPCSeqParser != NULL )
? dynamic_cast< CSIPCSeqParser* > ( SIPMessageParser.m_pSIPCSeqParser->Copy() ) : NULL ) ;
m_pSIPDateParser = ( ( SIPMessageParser.m_pSIPDateParser != NULL )
? dynamic_cast< CSIPDateParser* > ( SIPMessageParser.m_pSIPDateParser->Copy() ) : NULL ) ;
m_pSIPErrorInfoParser = ( ( SIPMessageParser.m_pSIPErrorInfoParser != NULL )
? dynamic_cast< CSIPErrorInfoParser* > ( SIPMessageParser.m_pSIPErrorInfoParser->Copy() ) : NULL ) ;
m_pSIPExpiresParser = ( ( SIPMessageParser.m_pSIPExpiresParser != NULL )
? dynamic_cast< CSIPExpiresParser* > ( SIPMessageParser.m_pSIPExpiresParser->Copy() ) : NULL ) ;
m_pSIPFromParser = ( ( SIPMessageParser.m_pSIPFromParser != NULL )
? dynamic_cast< CSIPFromParser* > ( SIPMessageParser.m_pSIPFromParser->Copy() ) : NULL ) ;
m_pSIPInReplyToParser = ( ( SIPMessageParser.m_pSIPInReplyToParser != NULL )
? dynamic_cast< CSIPInReplyToParser* > ( SIPMessageParser.m_pSIPInReplyToParser->Copy() ) : NULL ) ;
m_pSIPMaxForwardsParser = ( ( SIPMessageParser.m_pSIPMaxForwardsParser != NULL )
? dynamic_cast< CSIPMaxForwardsParser* > ( SIPMessageParser.m_pSIPMaxForwardsParser->Copy() ) : NULL ) ;
m_pSIPMimeVersionParser = ( ( SIPMessageParser.m_pSIPMimeVersionParser != NULL )
? dynamic_cast< CSIPMimeVersionParser* > ( SIPMessageParser.m_pSIPMimeVersionParser->Copy() ) : NULL ) ;
m_pSIPMinExpiresParser = ( ( SIPMessageParser.m_pSIPMinExpiresParser != NULL )
? dynamic_cast< CSIPMinExpiresParser* > ( SIPMessageParser.m_pSIPMinExpiresParser->Copy() ) : NULL ) ;
m_pSIPOrganizationParser = ( ( SIPMessageParser.m_pSIPOrganizationParser != NULL )
? dynamic_cast< CSIPOrganizationParser* > ( SIPMessageParser.m_pSIPOrganizationParser->Copy() ) : NULL ) ;
m_pSIPPriorityParser = ( ( SIPMessageParser.m_pSIPPriorityParser != NULL )
? dynamic_cast< CSIPPriorityParser* > ( SIPMessageParser.m_pSIPPriorityParser->Copy() ) : NULL ) ;
m_pSIPProxyAuthenticateParser = ( ( SIPMessageParser.m_pSIPProxyAuthenticateParser != NULL )
? dynamic_cast< CSIPProxyAuthenticateParser* > ( SIPMessageParser.m_pSIPProxyAuthenticateParser->Copy() ) : NULL ) ;
m_pSIPProxyAuthorizationParser = ( ( SIPMessageParser.m_pSIPProxyAuthorizationParser != NULL )
? dynamic_cast< CSIPProxyAuthorizationParser* > ( SIPMessageParser.m_pSIPProxyAuthorizationParser->Copy() ) : NULL ) ;
m_pSIPProxyRequireParser = ( ( SIPMessageParser.m_pSIPProxyRequireParser != NULL )
? dynamic_cast< CSIPProxyRequireParser* > ( SIPMessageParser.m_pSIPProxyRequireParser->Copy() ) : NULL ) ;
m_pSIPRecordRouteParser = ( ( SIPMessageParser.m_pSIPRecordRouteParser != NULL )
? dynamic_cast< CSIPRecordRouteParser* > ( SIPMessageParser.m_pSIPRecordRouteParser->Copy() ) : NULL ) ;
m_pSIPReplyToParser = ( ( SIPMessageParser.m_pSIPReplyToParser != NULL )
? dynamic_cast< CSIPReplyToParser* > ( SIPMessageParser.m_pSIPReplyToParser->Copy() ) : NULL ) ;
m_pSIPRequireParser = ( ( SIPMessageParser.m_pSIPRequireParser != NULL )
? dynamic_cast< CSIPRequireParser* > ( SIPMessageParser.m_pSIPRequireParser->Copy() ) : NULL ) ;
m_pSIPRetryAfterParser = ( ( SIPMessageParser.m_pSIPRetryAfterParser != NULL )
? dynamic_cast< CSIPRetryAfterParser* > ( SIPMessageParser.m_pSIPRetryAfterParser->Copy() ) : NULL ) ;
m_pSIPRouteParser = ( ( SIPMessageParser.m_pSIPRouteParser != NULL )
? dynamic_cast< CSIPRouteParser* > ( SIPMessageParser.m_pSIPRouteParser->Copy() ) : NULL ) ;
m_pSIPServerParser = ( ( SIPMessageParser.m_pSIPServerParser != NULL )
? dynamic_cast< CSIPServerParser* > ( SIPMessageParser.m_pSIPServerParser->Copy() ) : NULL ) ;
m_pSIPSubjectParser = ( ( SIPMessageParser.m_pSIPSubjectParser != NULL )
? dynamic_cast< CSIPSubjectParser* > ( SIPMessageParser.m_pSIPSubjectParser->Copy() ) : NULL ) ;
m_pSIPSupportedParser = ( ( SIPMessageParser.m_pSIPSupportedParser != NULL )
? dynamic_cast< CSIPSupportedParser* > ( SIPMessageParser.m_pSIPSupportedParser->Copy() ) : NULL ) ;
m_pSIPTimestampParser = ( ( SIPMessageParser.m_pSIPTimestampParser != NULL )
? dynamic_cast< CSIPTimestampParser* > ( SIPMessageParser.m_pSIPTimestampParser->Copy() ) : NULL ) ;
m_pSIPToParser = ( ( SIPMessageParser.m_pSIPToParser != NULL )
? dynamic_cast< CSIPToParser* > ( SIPMessageParser.m_pSIPToParser->Copy() ) : NULL ) ;
m_pSIPUnSupportedParser = ( ( SIPMessageParser.m_pSIPUnSupportedParser != NULL )
? dynamic_cast< CSIPUnSupportedParser* > ( SIPMessageParser.m_pSIPUnSupportedParser->Copy() ) : NULL ) ;
m_pSIPUserAgentParser = ( ( SIPMessageParser.m_pSIPUserAgentParser != NULL )
? dynamic_cast< CSIPUserAgentParser* > ( SIPMessageParser.m_pSIPUserAgentParser->Copy() ) : NULL ) ;
m_pSIPViaParser = ( ( SIPMessageParser.m_pSIPViaParser != NULL )
? dynamic_cast< CSIPViaParser* > ( SIPMessageParser.m_pSIPViaParser->Copy() ) : NULL ) ;
m_pSIPWarningParser = ( ( SIPMessageParser.m_pSIPWarningParser != NULL )
? dynamic_cast< CSIPWarningParser* > ( SIPMessageParser.m_pSIPWarningParser->Copy() ) : NULL ) ;
m_pSIPWWWAuthenticateParser = ( ( SIPMessageParser.m_pSIPWWWAuthenticateParser != NULL )
? dynamic_cast< CSIPWWWAuthenticateParser* > ( SIPMessageParser.m_pSIPWWWAuthenticateParser->Copy() ) : NULL ) ;
m_pSIPMessageBodyData = ( ( SIPMessageParser.m_pSIPMessageBodyData != NULL )
? dynamic_cast< CMessageData* > ( SIPMessageParser.m_pSIPMessageBodyData->Copy() ) : NULL ) ;
}
CSIPMessageParser* CSIPMessageParser::GetAvailable()
{
CSIPMessageParser *pSIPMessageParser = CPoolObject<CSIPMessageParser>::GetAvailable() ;
return pSIPMessageParser ;
}
void CSIPMessageParser::Release()
{
ReleaseParameters() ;
CPoolObject<CSIPMessageParser>::Release( this ) ;
}
void CSIPMessageParser::ReleaseParameters()
{
ReleaseCSIPMessageParserData() ;
ASIPParser::ReleaseParameters() ;
}
ASIPParser* CSIPMessageParser::Copy()
{
CSIPMessageParser *pSIPMessageParser = CSIPMessageParser::GetAvailable() ;
if( pSIPMessageParser == NULL )
return NULL ;
*pSIPMessageParser = *this ;
return pSIPMessageParser ;
}
void CSIPMessageParser::SetSIPMethod( const std::string &strSIPMethod )
{
if( m_pSIPMethodData == NULL )
m_pSIPMethodData = CMessageData::GetAvailable() ;
m_pSIPMethodData->SetData( strSIPMethod.c_str(), strSIPMethod.size() ) ;
}
std::string CSIPMessageParser::GetSIPMethod() const
{
if( m_pSIPMethodData == NULL )
return "" ;
return ( const char* ) m_pSIPMethodData->GetData() ;
}
void CSIPMessageParser::SetSIPVersion( const std::string &strSIPVersion )
{
if( m_pSIPVersionData == NULL )
m_pSIPVersionData = CMessageData::GetAvailable() ;
m_pSIPVersionData->SetData( strSIPVersion.c_str(), strSIPVersion.size() ) ;
}
std::string CSIPMessageParser::GetSIPVersion() const
{
if( m_pSIPVersionData == NULL )
return "" ;
return ( const char* ) m_pSIPVersionData->GetData() ;
}
void CSIPMessageParser::SetSIPStatusCode( const std::string &strSIPStatusCode )
{
if( m_pSIPStatusCodeData == NULL )
m_pSIPStatusCodeData = CMessageData::GetAvailable() ;
m_pSIPStatusCodeData->SetData( strSIPStatusCode.c_str(), strSIPStatusCode.size() ) ;
}
std::string CSIPMessageParser::GetSIPStatusCode() const
{
if( m_pSIPStatusCodeData == NULL )
return "" ;
return ( const char* ) m_pSIPStatusCodeData->GetData() ;
}
void CSIPMessageParser::SetSIPReasonPhrase( const std::string &strSIPReasonPhrase )
{
if( m_pSIPReasonPhraseData == NULL )
m_pSIPReasonPhraseData = CMessageData::GetAvailable() ;
m_pSIPReasonPhraseData->SetData( strSIPReasonPhrase.c_str(), strSIPReasonPhrase.size() ) ;
}
std::string CSIPMessageParser::GetSIPReasonPhrase() const
{
if( m_pSIPReasonPhraseData == NULL )
return "" ;
return ( const char* ) m_pSIPReasonPhraseData->GetData() ;
}
void CSIPMessageParser::SetSIPMessageBody( const std::string &strSIPMessageBody )
{
if( m_pSIPMessageBodyData == NULL )
m_pSIPMessageBodyData = CMessageData::GetAvailable() ;
m_pSIPMessageBodyData->SetData( strSIPMessageBody.c_str(), strSIPMessageBody.size() ) ;
}
std::string CSIPMessageParser::GetSIPMessageBody() const
{
if( m_pSIPMessageBodyData == NULL )
return "" ;
return ( const char* ) m_pSIPMessageBodyData->GetData() ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPMethodData( CMessageData **pSIPMethodData )
{
*pSIPMethodData = NULL ;
if( m_pSIPMethodData == NULL )
{
m_pSIPMethodData = CMessageData::GetAvailable() ;
if( m_pSIPMethodData == NULL )
return SIP_PARSE_ERR_SIP_METHOD_DATA_OBJECT_NOT_CREATED ;
}
*pSIPMethodData = m_pSIPMethodData ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPRequestURIParser( CSIPURIParser **pSIPRequestURIParser )
{
*pSIPRequestURIParser = NULL ;
if( m_pSIPRequestURIParser == NULL )
{
m_pSIPRequestURIParser = CSIPURIParser::GetAvailable() ;
if( m_pSIPRequestURIParser == NULL )
return SIP_PARSE_ERR_SIP_REQUEST_URI_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPRequestURIParser = m_pSIPRequestURIParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPVersionData( CMessageData **pSIPVersionData )
{
*pSIPVersionData = NULL ;
if( m_pSIPVersionData == NULL )
{
m_pSIPVersionData = CMessageData::GetAvailable() ;
if( m_pSIPVersionData == NULL )
return SIP_PARSE_ERR_SIP_VERSION_DATA_OBJECT_NOT_CREATED ;
}
*pSIPVersionData = m_pSIPVersionData ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPStatusCodeData( CMessageData **pSIPStatusCodeData )
{
*pSIPStatusCodeData = NULL ;
if( m_pSIPStatusCodeData == NULL )
{
m_pSIPStatusCodeData = CMessageData::GetAvailable() ;
if( m_pSIPStatusCodeData == NULL )
return SIP_PARSE_ERR_SIP_STATUS_CODE_DATA_OBJECT_NOT_CREATED ;
}
*pSIPStatusCodeData = m_pSIPStatusCodeData ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPReasonPhraseData( CMessageData **pSIPReasonPhraseData )
{
*pSIPReasonPhraseData = NULL ;
if( m_pSIPReasonPhraseData == NULL )
{
m_pSIPReasonPhraseData = CMessageData::GetAvailable() ;
if( m_pSIPReasonPhraseData == NULL )
return SIP_PARSE_ERR_SIP_REASON_PHRASE_DATA_OBJECT_NOT_CREATED ;
}
*pSIPReasonPhraseData = m_pSIPReasonPhraseData ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAcceptParser( CSIPAcceptParser **pSIPAcceptParser )
{
*pSIPAcceptParser = NULL ;
if( m_pSIPAcceptParser == NULL )
{
m_pSIPAcceptParser = CSIPAcceptParser::GetAvailable() ;
if( m_pSIPAcceptParser == NULL )
return SIP_PARSE_ERR_SIP_ACCEPT_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAcceptParser = m_pSIPAcceptParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAcceptEncodingParser( CSIPAcceptEncodingParser **pSIPAcceptEncodingParser )
{
*pSIPAcceptEncodingParser = NULL ;
if( m_pSIPAcceptEncodingParser == NULL )
{
m_pSIPAcceptEncodingParser = CSIPAcceptEncodingParser::GetAvailable() ;
if( m_pSIPAcceptEncodingParser == NULL )
return SIP_PARSE_ERR_SIP_ACCEPT_ENCODING_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAcceptEncodingParser = m_pSIPAcceptEncodingParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAcceptLanguageParser( CSIPAcceptLanguageParser **pSIPAcceptLanguageParser )
{
*pSIPAcceptLanguageParser = NULL ;
if( m_pSIPAcceptLanguageParser == NULL )
{
m_pSIPAcceptLanguageParser = CSIPAcceptLanguageParser::GetAvailable() ;
if( m_pSIPAcceptLanguageParser == NULL )
return SIP_PARSE_ERR_SIP_ACCEPT_LANGUAGE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAcceptLanguageParser = m_pSIPAcceptLanguageParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAlertInfoParser( CSIPAlertInfoParser **pSIPAlertInfoParser )
{
*pSIPAlertInfoParser = NULL ;
if( m_pSIPAlertInfoParser == NULL )
{
m_pSIPAlertInfoParser = CSIPAlertInfoParser::GetAvailable() ;
if( m_pSIPAlertInfoParser == NULL )
return SIP_PARSE_ERR_SIP_ALERT_INFO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAlertInfoParser = m_pSIPAlertInfoParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAllowParser( CSIPAllowParser **pSIPAllowParser )
{
*pSIPAllowParser = NULL ;
if( m_pSIPAllowParser == NULL )
{
m_pSIPAllowParser = CSIPAllowParser::GetAvailable() ;
if( m_pSIPAllowParser == NULL )
return SIP_PARSE_ERR_SIP_ALLOW_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAllowParser = m_pSIPAllowParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAuthenticationInfoParser( CSIPAuthenticationInfoParser **pSIPAuthenticationInfoParser )
{
*pSIPAuthenticationInfoParser = NULL ;
if( m_pSIPAuthenticationInfoParser == NULL )
{
m_pSIPAuthenticationInfoParser = CSIPAuthenticationInfoParser::GetAvailable() ;
if( m_pSIPAuthenticationInfoParser == NULL )
return SIP_PARSE_ERR_SIP_AUTHENTICATION_INFO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAuthenticationInfoParser = m_pSIPAuthenticationInfoParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPAuthorizationParser( CSIPAuthorizationParser **pSIPAuthorizationParser )
{
*pSIPAuthorizationParser = NULL ;
if( m_pSIPAuthorizationParser == NULL )
{
m_pSIPAuthorizationParser = CSIPAuthorizationParser::GetAvailable() ;
if( m_pSIPAuthorizationParser == NULL )
return SIP_PARSE_ERR_SIP_AUTHORIZATION_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPAuthorizationParser = m_pSIPAuthorizationParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPCallIDParser( CSIPCallIDParser **pSIPCallIDParser )
{
*pSIPCallIDParser = NULL ;
if( m_pSIPCallIDParser == NULL )
{
m_pSIPCallIDParser = CSIPCallIDParser::GetAvailable() ;
if( m_pSIPCallIDParser == NULL )
return SIP_PARSE_ERR_SIP_CALL_ID_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPCallIDParser = m_pSIPCallIDParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPCallInfoParser( CSIPCallInfoParser **pSIPCallInfoParser )
{
*pSIPCallInfoParser = NULL ;
if( m_pSIPCallInfoParser == NULL )
{
m_pSIPCallInfoParser = CSIPCallInfoParser::GetAvailable() ;
if( m_pSIPCallInfoParser == NULL )
return SIP_PARSE_ERR_SIP_CALL_INFO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPCallInfoParser = m_pSIPCallInfoParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPContactParser( CSIPContactParser **pSIPContactParser )
{
*pSIPContactParser = NULL ;
if( m_pSIPContactParser == NULL )
{
m_pSIPContactParser = CSIPContactParser::GetAvailable() ;
if( m_pSIPContactParser == NULL )
return SIP_PARSE_ERR_SIP_CONTACT_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPContactParser = m_pSIPContactParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPContentDispositionParser( CSIPContentDispositionParser **pSIPContentDispositionParser )
{
*pSIPContentDispositionParser = NULL ;
if( m_pSIPContentDispositionParser == NULL )
{
m_pSIPContentDispositionParser = CSIPContentDispositionParser::GetAvailable() ;
if( m_pSIPContentDispositionParser == NULL )
return SIP_PARSE_ERR_SIP_CONTENT_DISPOSITION_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPContentDispositionParser = m_pSIPContentDispositionParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPContentEncodingParser( CSIPContentEncodingParser **pSIPContentEncodingParser )
{
*pSIPContentEncodingParser = NULL ;
if( m_pSIPContentEncodingParser == NULL )
{
m_pSIPContentEncodingParser = CSIPContentEncodingParser::GetAvailable() ;
if( m_pSIPContentEncodingParser == NULL )
return SIP_PARSE_ERR_SIP_CONTENT_ENCODING_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPContentEncodingParser = m_pSIPContentEncodingParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPContentLanguageParser( CSIPContentLanguageParser **pSIPContentLanguageParser )
{
*pSIPContentLanguageParser = NULL ;
if( m_pSIPContentLanguageParser == NULL )
{
m_pSIPContentLanguageParser = CSIPContentLanguageParser::GetAvailable() ;
if( m_pSIPContentLanguageParser == NULL )
return SIP_PARSE_ERR_SIP_CONTENT_LANGUAGE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPContentLanguageParser = m_pSIPContentLanguageParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPContentLengthParser( CSIPContentLengthParser **pSIPContentLengthParser )
{
*pSIPContentLengthParser = NULL ;
if( m_pSIPContentLengthParser == NULL )
{
m_pSIPContentLengthParser = CSIPContentLengthParser::GetAvailable() ;
if( m_pSIPContentLengthParser == NULL )
return SIP_PARSE_ERR_SIP_CONTENT_LENGTH_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPContentLengthParser = m_pSIPContentLengthParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPContentTypeParser( CSIPContentTypeParser **pSIPContentTypeParser )
{
*pSIPContentTypeParser = NULL ;
if( m_pSIPContentTypeParser == NULL )
{
m_pSIPContentTypeParser = CSIPContentTypeParser::GetAvailable() ;
if( m_pSIPContentTypeParser == NULL )
return SIP_PARSE_ERR_SIP_CONTENT_TYPE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPContentTypeParser = m_pSIPContentTypeParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPCSeqParser( CSIPCSeqParser **pSIPCSeqParser )
{
*pSIPCSeqParser = NULL ;
if( m_pSIPCSeqParser == NULL )
{
m_pSIPCSeqParser = CSIPCSeqParser::GetAvailable() ;
if( m_pSIPCSeqParser == NULL )
return SIP_PARSE_ERR_SIP_CSEQ_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPCSeqParser = m_pSIPCSeqParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPDateParser( CSIPDateParser **pSIPDateParser )
{
*pSIPDateParser = NULL ;
if( m_pSIPDateParser == NULL )
{
m_pSIPDateParser = CSIPDateParser::GetAvailable() ;
if( m_pSIPDateParser == NULL )
return SIP_PARSE_ERR_SIP_DATE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPDateParser = m_pSIPDateParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPErrorInfoParser( CSIPErrorInfoParser **pSIPErrorInfoParser )
{
*pSIPErrorInfoParser = NULL ;
if( m_pSIPErrorInfoParser == NULL )
{
m_pSIPErrorInfoParser = CSIPErrorInfoParser::GetAvailable() ;
if( m_pSIPErrorInfoParser == NULL )
return SIP_PARSE_ERR_SIP_ERROR_INFO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPErrorInfoParser = m_pSIPErrorInfoParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPExpiresParser( CSIPExpiresParser **pSIPExpiresParser )
{
*pSIPExpiresParser = NULL ;
if( m_pSIPExpiresParser == NULL )
{
m_pSIPExpiresParser = CSIPExpiresParser::GetAvailable() ;
if( m_pSIPExpiresParser == NULL )
return SIP_PARSE_ERR_SIP_EXPIRES_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPExpiresParser = m_pSIPExpiresParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPFromParser( CSIPFromParser **pSIPFromParser )
{
*pSIPFromParser = NULL ;
if( m_pSIPFromParser == NULL )
{
m_pSIPFromParser = CSIPFromParser::GetAvailable() ;
if( m_pSIPFromParser == NULL )
return SIP_PARSE_ERR_SIP_FROM_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPFromParser = m_pSIPFromParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPInReplyToParser( CSIPInReplyToParser **pSIPInReplyToParser )
{
*pSIPInReplyToParser = NULL ;
if( m_pSIPInReplyToParser == NULL )
{
m_pSIPInReplyToParser = CSIPInReplyToParser::GetAvailable() ;
if( m_pSIPInReplyToParser == NULL )
return SIP_PARSE_ERR_SIP_IN_REPLY_TO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPInReplyToParser = m_pSIPInReplyToParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPMaxForwardsParser( CSIPMaxForwardsParser **pSIPMaxForwardsParser )
{
*pSIPMaxForwardsParser = NULL ;
if( m_pSIPMaxForwardsParser == NULL )
{
m_pSIPMaxForwardsParser = CSIPMaxForwardsParser::GetAvailable() ;
if( m_pSIPMaxForwardsParser == NULL )
return SIP_PARSE_ERR_SIP_MAX_FORWARDS_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPMaxForwardsParser = m_pSIPMaxForwardsParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPMimeVersionParser( CSIPMimeVersionParser **pSIPMimeVersionParser )
{
*pSIPMimeVersionParser = NULL ;
if( m_pSIPMimeVersionParser == NULL )
{
m_pSIPMimeVersionParser = CSIPMimeVersionParser::GetAvailable() ;
if( m_pSIPMimeVersionParser == NULL )
return SIP_PARSE_ERR_SIP_MIME_VERSION_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPMimeVersionParser = m_pSIPMimeVersionParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPMinExpiresParser( CSIPMinExpiresParser **pSIPMinExpiresParser )
{
*pSIPMinExpiresParser = NULL ;
if( m_pSIPMinExpiresParser == NULL )
{
m_pSIPMinExpiresParser = CSIPMinExpiresParser::GetAvailable() ;
if( m_pSIPMinExpiresParser == NULL )
return SIP_PARSE_ERR_SIP_MIN_EXPIRES_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPMinExpiresParser = m_pSIPMinExpiresParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPOrganizationParser( CSIPOrganizationParser **pSIPOrganizationParser )
{
*pSIPOrganizationParser = NULL ;
if( m_pSIPOrganizationParser == NULL )
{
m_pSIPOrganizationParser = CSIPOrganizationParser::GetAvailable() ;
if( m_pSIPOrganizationParser == NULL )
return SIP_PARSE_ERR_SIP_ORGANIZATION_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPOrganizationParser = m_pSIPOrganizationParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPPriorityParser( CSIPPriorityParser **pSIPPriorityParser )
{
*pSIPPriorityParser = NULL ;
if( m_pSIPPriorityParser == NULL )
{
m_pSIPPriorityParser = CSIPPriorityParser::GetAvailable() ;
if( m_pSIPPriorityParser == NULL )
return SIP_PARSE_ERR_SIP_PRIORITY_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPPriorityParser = m_pSIPPriorityParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPProxyAuthenticateParser( CSIPProxyAuthenticateParser **pSIPProxyAuthenticateParser )
{
*pSIPProxyAuthenticateParser = NULL ;
if( m_pSIPProxyAuthenticateParser == NULL )
{
m_pSIPProxyAuthenticateParser = CSIPProxyAuthenticateParser::GetAvailable() ;
if( m_pSIPProxyAuthenticateParser == NULL )
return SIP_PARSE_ERR_SIP_PROXY_AUTHENTICATE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPProxyAuthenticateParser = m_pSIPProxyAuthenticateParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPProxyAuthorizationParser( CSIPProxyAuthorizationParser **pSIPProxyAuthorizationParser )
{
*pSIPProxyAuthorizationParser = NULL ;
if( m_pSIPProxyAuthorizationParser == NULL )
{
m_pSIPProxyAuthorizationParser = CSIPProxyAuthorizationParser::GetAvailable() ;
if( m_pSIPProxyAuthorizationParser == NULL )
return SIP_PARSE_ERR_SIP_PROXY_AUTHORIZATION_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPProxyAuthorizationParser = m_pSIPProxyAuthorizationParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPProxyRequireParser( CSIPProxyRequireParser **pSIPProxyRequireParser )
{
*pSIPProxyRequireParser = NULL ;
if( m_pSIPProxyRequireParser == NULL )
{
m_pSIPProxyRequireParser = CSIPProxyRequireParser::GetAvailable() ;
if( m_pSIPProxyRequireParser == NULL )
return SIP_PARSE_ERR_SIP_PROXY_REQUIRE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPProxyRequireParser = m_pSIPProxyRequireParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPRecordRouteParser( CSIPRecordRouteParser **pSIPRecordRouteParser )
{
*pSIPRecordRouteParser = NULL ;
if( m_pSIPRecordRouteParser == NULL )
{
m_pSIPRecordRouteParser = CSIPRecordRouteParser::GetAvailable() ;
if( m_pSIPRecordRouteParser == NULL )
return SIP_PARSE_ERR_SIP_RECORD_ROUTE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPRecordRouteParser = m_pSIPRecordRouteParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPReplyToParser( CSIPReplyToParser **pSIPReplyToParser )
{
*pSIPReplyToParser = NULL ;
if( m_pSIPReplyToParser == NULL )
{
m_pSIPReplyToParser = CSIPReplyToParser::GetAvailable() ;
if( m_pSIPReplyToParser == NULL )
return SIP_PARSE_ERR_SIP_REPLY_TO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPReplyToParser = m_pSIPReplyToParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPRequireParser( CSIPRequireParser **pSIPRequireParser )
{
*pSIPRequireParser = NULL ;
if( m_pSIPRequireParser == NULL )
{
m_pSIPRequireParser = CSIPRequireParser::GetAvailable() ;
if( m_pSIPRequireParser == NULL )
return SIP_PARSE_ERR_SIP_REQUIRE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPRequireParser = m_pSIPRequireParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPRetryAfterParser( CSIPRetryAfterParser **pSIPRetryAfterParser )
{
*pSIPRetryAfterParser = NULL ;
if( m_pSIPRetryAfterParser == NULL )
{
m_pSIPRetryAfterParser = CSIPRetryAfterParser::GetAvailable() ;
if( m_pSIPRetryAfterParser == NULL )
return SIP_PARSE_ERR_SIP_RETRY_AFTER_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPRetryAfterParser = m_pSIPRetryAfterParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPRouteParser( CSIPRouteParser **pSIPRouteParser )
{
*pSIPRouteParser = NULL ;
if( m_pSIPRouteParser == NULL )
{
m_pSIPRouteParser = CSIPRouteParser::GetAvailable() ;
if( m_pSIPRouteParser == NULL )
return SIP_PARSE_ERR_SIP_ROUTE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPRouteParser = m_pSIPRouteParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPServerParser( CSIPServerParser **pSIPServerParser )
{
*pSIPServerParser = NULL ;
if( m_pSIPServerParser == NULL )
{
m_pSIPServerParser = CSIPServerParser::GetAvailable() ;
if( m_pSIPServerParser == NULL )
return SIP_PARSE_ERR_SIP_SERVER_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPServerParser = m_pSIPServerParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPSubjectParser( CSIPSubjectParser **pSIPSubjectParser )
{
*pSIPSubjectParser = NULL ;
if( m_pSIPSubjectParser == NULL )
{
m_pSIPSubjectParser = CSIPSubjectParser::GetAvailable() ;
if( m_pSIPSubjectParser == NULL )
return SIP_PARSE_ERR_SIP_SUBJECT_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPSubjectParser = m_pSIPSubjectParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPSupportedParser( CSIPSupportedParser **pSIPSupportedParser )
{
*pSIPSupportedParser = NULL ;
if( m_pSIPSupportedParser == NULL )
{
m_pSIPSupportedParser = CSIPSupportedParser::GetAvailable() ;
if( m_pSIPSupportedParser == NULL )
return SIP_PARSE_ERR_SIP_SUPPORTED_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPSupportedParser = m_pSIPSupportedParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPTimestampParser( CSIPTimestampParser **pSIPTimestampParser )
{
*pSIPTimestampParser = NULL ;
if( m_pSIPTimestampParser == NULL )
{
m_pSIPTimestampParser = CSIPTimestampParser::GetAvailable() ;
if( m_pSIPTimestampParser == NULL )
return SIP_PARSE_ERR_SIP_TIMESTAMP_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPTimestampParser = m_pSIPTimestampParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPToParser( CSIPToParser **pSIPToParser )
{
*pSIPToParser = NULL ;
if( m_pSIPToParser == NULL )
{
m_pSIPToParser = CSIPToParser::GetAvailable() ;
if( m_pSIPToParser == NULL )
return SIP_PARSE_ERR_SIP_TO_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPToParser = m_pSIPToParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPUnSupportedParser( CSIPUnSupportedParser **pSIPUnSupportedParser )
{
*pSIPUnSupportedParser = NULL ;
if( m_pSIPUnSupportedParser == NULL )
{
m_pSIPUnSupportedParser = CSIPUnSupportedParser::GetAvailable() ;
if( m_pSIPUnSupportedParser == NULL )
return SIP_PARSE_ERR_SIP_UNSUPPORTED_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPUnSupportedParser = m_pSIPUnSupportedParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPUserAgentParser( CSIPUserAgentParser **pSIPUserAgentParser )
{
*pSIPUserAgentParser = NULL ;
if( m_pSIPUserAgentParser == NULL )
{
m_pSIPUserAgentParser = CSIPUserAgentParser::GetAvailable() ;
if( m_pSIPUserAgentParser == NULL )
return SIP_PARSE_ERR_SIP_USER_AGENT_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPUserAgentParser = m_pSIPUserAgentParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPViaParser( CSIPViaParser **pSIPViaParser )
{
*pSIPViaParser = NULL ;
if( m_pSIPViaParser == NULL )
{
m_pSIPViaParser = CSIPViaParser::GetAvailable() ;
m_pSIPViaParser->SetCreateStringInMultipleHeaderFormat( true ) ;
if( m_pSIPViaParser == NULL )
return SIP_PARSE_ERR_SIP_VIA_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPViaParser = m_pSIPViaParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPWarningParser( CSIPWarningParser **pSIPWarningParser )
{
*pSIPWarningParser = NULL ;
if( m_pSIPWarningParser == NULL )
{
m_pSIPWarningParser = CSIPWarningParser::GetAvailable() ;
if( m_pSIPWarningParser == NULL )
return SIP_PARSE_ERR_SIP_WARNING_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPWarningParser = m_pSIPWarningParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPWWWAuthenticateParser( CSIPWWWAuthenticateParser **pSIPWWWAuthenticateParser )
{
*pSIPWWWAuthenticateParser = NULL ;
if( m_pSIPWWWAuthenticateParser == NULL )
{
m_pSIPWWWAuthenticateParser = CSIPWWWAuthenticateParser::GetAvailable() ;
if( m_pSIPWWWAuthenticateParser == NULL )
return SIP_PARSE_ERR_SIP_WWW_AUTHENTICATE_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPWWWAuthenticateParser = m_pSIPWWWAuthenticateParser ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::QuerySIPMessageBodyData( CMessageData **pSIPMessageBodyData )
{
*pSIPMessageBodyData = NULL ;
if( m_pSIPMessageBodyData == NULL )
{
m_pSIPMessageBodyData = CMessageData::GetAvailable() ;
if( m_pSIPMessageBodyData == NULL )
return SIP_PARSE_ERR_SIP_MESSAGE_BODY_DATA_OBJECT_NOT_CREATED ;
}
*pSIPMessageBodyData = m_pSIPMessageBodyData ;
return SIP_ERR_SUCCESS ;
}
/*
FW_RETURN_TYPE CSIPMessageParser::QuerySIPFromParameters( CSIPParamListParser **pSIPFromParameters )
{
*pSIPFromParameters = NULL ;
if( m_pSIPFromParameters == NULL )
{
m_pSIPFromParameters = CSIPParamListParser::GetAvailable() ;
if( m_pSIPFromParameters == NULL )
return SIP_PARSE_ERR_SIP_PARAM_LIST_PARSER_OBJECT_NOT_CREATED ;
}
*pSIPFromParameters = m_pSIPFromParameters ;
return SIP_ERR_SUCCESS ;
}*/
FW_RETURN_TYPE CSIPMessageParser::ParseRequestLine( const std::string &strStringToParse )
{
if( strStringToParse.empty() )
return SIP_PARSE_ERR_EMPTY_STRING_TO_PARSE ;
// Request-Line = Method SP Request-URI SP SIP-Version CRLF
std::string::size_type iFirstSpacePosition = strStringToParse.find( SIP_CONST_SPACE ) ;
if( iFirstSpacePosition == std::string::npos )
return SIP_PARSE_ERR_INVALID_SIP_REQUEST_LINE ;
int iSIPSpaceDelimiterSize = strlen( SIP_CONST_SPACE ) ;
std::string::size_type iSecondSpacePosition = strStringToParse.find( SIP_CONST_SPACE,
iFirstSpacePosition + iSIPSpaceDelimiterSize ) ;
if( iSecondSpacePosition == std::string::npos )
return SIP_PARSE_ERR_INVALID_SIP_REQUEST_LINE ;
SetSIPMethod( strStringToParse.substr( 0, iFirstSpacePosition ) ) ;
FW_RETURN_TYPE FWRetValue = SIP_ERR_SUCCESS ;
CSIPURIParser *pRequestURIParser = NULL ;
if( ( FWRetValue = QuerySIPRequestURIParser( &pRequestURIParser ) ) != SIP_ERR_SUCCESS )
return FWRetValue ;
if( ( FWRetValue = pRequestURIParser->Parse( strStringToParse.substr( iFirstSpacePosition + iSIPSpaceDelimiterSize,
iSecondSpacePosition - ( iFirstSpacePosition + iSIPSpaceDelimiterSize ) ) ) ) != SIP_ERR_SUCCESS )
return FWRetValue ;
SetSIPVersion( strStringToParse.substr( iSecondSpacePosition + iSIPSpaceDelimiterSize ) ) ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::ParseResponseStatusLine( const std::string &strStringToParse )
{
if( strStringToParse.empty() )
return SIP_PARSE_ERR_EMPTY_STRING_TO_PARSE ;
// Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF
std::string::size_type iFirstSpacePosition = strStringToParse.find( SIP_CONST_SPACE ) ;
if( iFirstSpacePosition == std::string::npos )
return SIP_PARSE_ERR_INVALID_SIP_RESPONSE_STATUS_LINE ;
int iSIPSpaceDelimiterSize = strlen( SIP_CONST_SPACE ) ;
std::string::size_type iSecondSpacePosition = strStringToParse.find( SIP_CONST_SPACE,
iFirstSpacePosition + iSIPSpaceDelimiterSize ) ;
if( iSecondSpacePosition == std::string::npos )
return SIP_PARSE_ERR_INVALID_SIP_RESPONSE_STATUS_LINE ;
SetSIPVersion( strStringToParse.substr( 0, iFirstSpacePosition ) ) ;
SetSIPStatusCode( strStringToParse.substr( iFirstSpacePosition + iSIPSpaceDelimiterSize,
iSecondSpacePosition - ( iFirstSpacePosition + iSIPSpaceDelimiterSize ) ) ) ;
SetSIPReasonPhrase( strStringToParse.substr( iSecondSpacePosition + iSIPSpaceDelimiterSize ) ) ;
return SIP_ERR_SUCCESS ;
}
FW_RETURN_TYPE CSIPMessageParser::ParseMessageHeaders( const std::string &strStringToParse,
std::string::size_type &iMessageBodyPosition )
{
if( strStringToParse.empty() )
return SIP_PARSE_ERR_EMPTY_STRING_TO_PARSE ;
std::string lstrStringToParse = strStringToParse ;
std::string strHeaderDataBuffer = "" ;
std::string strHeaderName = "" ;
std::string strHeaderValue = "" ;
std::string::size_type iColonPosition = std::string::npos ;
std::string::size_type iCRLFPosition = std::string::npos ;
FW_RETURN_TYPE FWRetValue = SIP_ERR_SUCCESS ;
ASIPParser *pSIPParser = NULL ;
while( ( iCRLFPosition = lstrStringToParse.find( m_strCRLFDelimiter ) ) != 0 )
{
strHeaderDataBuffer = lstrStringToParse.substr( 0, iCRLFPosition ) ;
lstrStringToParse = lstrStringToParse.substr( iCRLFPosition + m_strCRLFDelimiter.size() ) ;
// Retrieve Message Body Position
iMessageBodyPosition += iCRLFPosition + m_strCRLFDelimiter.size() ;
iColonPosition = strHeaderDataBuffer.find( m_strColonDelimiter ) ;
if( iColonPosition == std::string::npos )
return SIP_PARSE_ERR_INVALID_SIP_MESSAGE_HEADER ;
strHeaderName = strHeaderDataBuffer.substr( 0, iColonPosition ) ;
strHeaderValue = strHeaderDataBuffer.substr( iColonPosition + m_strColonDelimiter.size() ) ;
// To, From, CSeq, Call-ID, Max-Forwards, and Via;
CHHString::TrimAll( strHeaderName ) ;
CHHString::TrimAll( strHeaderValue ) ;
FWRetValue = SIP_ERR_SUCCESS ;
pSIPParser = NULL ;
if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_FROM ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_FROM ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_FROM ) )
)
{
FWRetValue = QuerySIPFromParser( ( CSIPFromParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_TO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_TO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_TO ) )
)
{
FWRetValue = QuerySIPToParser( ( CSIPToParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_VIA ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_VIA ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_VIA ) )
)
{
FWRetValue = QuerySIPViaParser( ( CSIPViaParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CALL_ID ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CALL_ID ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CALL_ID ) )
)
{
FWRetValue = QuerySIPCallIDParser( ( CSIPCallIDParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CSEQ ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CSEQ ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CSEQ ) )
)
{
FWRetValue = QuerySIPCSeqParser( ( CSIPCSeqParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_MAX_FORWARDS ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_MAX_FORWARDS ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_MAX_FORWARDS ) )
)
{
FWRetValue = QuerySIPMaxForwardsParser( ( CSIPMaxForwardsParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CONTACT ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CONTACT ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CONTACT ) )
)
{
FWRetValue = QuerySIPContactParser( ( CSIPContactParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_USER_AGENT ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_USER_AGENT ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_USER_AGENT ) )
)
{
FWRetValue = QuerySIPUserAgentParser( ( CSIPUserAgentParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CONTENT_TYPE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CONTENT_TYPE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CONTENT_TYPE ) )
)
{
FWRetValue = QuerySIPContentTypeParser( ( CSIPContentTypeParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CONTENT_LENGTH ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CONTENT_LENGTH ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CONTENT_LENGTH ) )
)
{
FWRetValue = QuerySIPContentLengthParser( ( CSIPContentLengthParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ACCEPT ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ACCEPT ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ACCEPT ) )
)
{
FWRetValue = QuerySIPAcceptParser( ( CSIPAcceptParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ACCEPT_ENCODING ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ACCEPT_ENCODING ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ACCEPT_ENCODING ) )
)
{
FWRetValue = QuerySIPAcceptEncodingParser( ( CSIPAcceptEncodingParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ACCEPT_LANGUAGE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ACCEPT_LANGUAGE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ACCEPT_LANGUAGE ) )
)
{
FWRetValue = QuerySIPAcceptLanguageParser( ( CSIPAcceptLanguageParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ALERT_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ALERT_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ALERT_INFO ) )
)
{
FWRetValue = QuerySIPAlertInfoParser( ( CSIPAlertInfoParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ALLOW ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ALLOW ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ALLOW ) )
)
{
FWRetValue = QuerySIPAllowParser( ( CSIPAllowParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_AUTEHTICATION_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_AUTEHTICATION_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_AUTEHTICATION_INFO ) )
)
{
FWRetValue = QuerySIPAuthenticationInfoParser( ( CSIPAuthenticationInfoParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_AUTHORIZATION ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_AUTHORIZATION ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_AUTHORIZATION ) )
)
{
FWRetValue = QuerySIPAuthorizationParser( ( CSIPAuthorizationParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CALL_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CALL_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CALL_INFO ) )
)
{
FWRetValue = QuerySIPCallInfoParser( ( CSIPCallInfoParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CONTENT_DISPOSITION ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CONTENT_DISPOSITION ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CONTENT_DISPOSITION ) )
)
{
FWRetValue = QuerySIPContentDispositionParser( ( CSIPContentDispositionParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CONTENT_ENCODING ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CONTENT_ENCODING ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CONTENT_ENCODING ) )
)
{
FWRetValue = QuerySIPContentEncodingParser( ( CSIPContentEncodingParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_CONTENT_LANGUAGE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_CONTENT_LANGUAGE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_CONTENT_LANGUAGE ) )
)
{
FWRetValue = QuerySIPContentLanguageParser( ( CSIPContentLanguageParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_DATE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_DATE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_DATE ) )
)
{
FWRetValue = QuerySIPDateParser( ( CSIPDateParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ERROR_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ERROR_INFO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ERROR_INFO ) )
)
{
FWRetValue = QuerySIPErrorInfoParser( ( CSIPErrorInfoParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_EXPIRES ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_EXPIRES ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_EXPIRES ) )
)
{
FWRetValue = QuerySIPExpiresParser( ( CSIPExpiresParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_IN_REPLY_TO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_IN_REPLY_TO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_IN_REPLY_TO ) )
)
{
FWRetValue = QuerySIPInReplyToParser( ( CSIPInReplyToParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_MIME_VERSION ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_MIME_VERSION ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_MIME_VERSION ) )
)
{
FWRetValue = QuerySIPMimeVersionParser( ( CSIPMimeVersionParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_MIN_EXPIRES ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_MIN_EXPIRES ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_MIN_EXPIRES ) )
)
{
FWRetValue = QuerySIPMinExpiresParser( ( CSIPMinExpiresParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ORGANIZATION ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ORGANIZATION ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ORGANIZATION ) )
)
{
FWRetValue = QuerySIPOrganizationParser( ( CSIPOrganizationParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_PRIORITY ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_PRIORITY ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_PRIORITY ) )
)
{
FWRetValue = QuerySIPPriorityParser( ( CSIPPriorityParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_PROXY_AUTHENTICATE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_PROXY_AUTHENTICATE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_PROXY_AUTHENTICATE ) )
)
{
FWRetValue = QuerySIPProxyAuthenticateParser( ( CSIPProxyAuthenticateParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_PROXY_AUTHORIZATION ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_PROXY_AUTHORIZATION ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_PROXY_AUTHORIZATION ) )
)
{
FWRetValue = QuerySIPProxyAuthorizationParser( ( CSIPProxyAuthorizationParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_PROXY_REQUIRE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_PROXY_REQUIRE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_PROXY_REQUIRE ) )
)
{
FWRetValue = QuerySIPProxyRequireParser( ( CSIPProxyRequireParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_RECORD_ROUTE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_RECORD_ROUTE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_RECORD_ROUTE ) )
)
{
FWRetValue = QuerySIPRecordRouteParser( ( CSIPRecordRouteParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_REPLY_TO ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_REPLY_TO ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_REPLY_TO ) )
)
{
FWRetValue = QuerySIPReplyToParser( ( CSIPReplyToParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_REQUIRE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_REQUIRE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_REQUIRE ) )
)
{
FWRetValue = QuerySIPRequireParser( ( CSIPRequireParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_RETRY_AFTER ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_RETRY_AFTER ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_RETRY_AFTER ) )
)
{
FWRetValue = QuerySIPRetryAfterParser( ( CSIPRetryAfterParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_ROUTE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_ROUTE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_ROUTE ) )
)
{
FWRetValue = QuerySIPRouteParser( ( CSIPRouteParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_SERVER ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_SERVER ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_SERVER ) )
)
{
FWRetValue = QuerySIPServerParser( ( CSIPServerParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_SUBJECT ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_SUBJECT ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_SUBJECT ) )
)
{
FWRetValue = QuerySIPSubjectParser( ( CSIPSubjectParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_SUPPORTED ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_SUPPORTED ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_SUPPORTED ) )
)
{
FWRetValue = QuerySIPSupportedParser( ( CSIPSupportedParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_TIMESTAMP ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_TIMESTAMP ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_TIMESTAMP ) )
)
{
FWRetValue = QuerySIPTimestampParser( ( CSIPTimestampParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_UNSUPPORTED ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_UNSUPPORTED ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_UNSUPPORTED ) )
)
{
FWRetValue = QuerySIPUnSupportedParser( ( CSIPUnSupportedParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_WARNING ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_WARNING ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_WARNING ) )
)
{
FWRetValue = QuerySIPWarningParser( ( CSIPWarningParser** ) &pSIPParser ) ;
}
else if( ( strHeaderName == ASIPParser::GetHeaderLowerName( SIP_HEADER_WWW_AUTHENTICATE ) )
|| ( strHeaderName == ASIPParser::GetHeaderShortName( SIP_HEADER_WWW_AUTHENTICATE ) )
|| ( strHeaderName == ASIPParser::GetHeaderUpperName( SIP_HEADER_WWW_AUTHENTICATE ) )
)
{
FWRetValue = QuerySIPWWWAuthenticateParser( ( CSIPWWWAuthenticateParser** ) &pSIPParser ) ;
}
if( FWRetValue != SIP_ERR_SUCCESS )
return FWRetValue ;
if( pSIPParser != NULL )
{
if( ( FWRetValue = pSIPParser->Parse( strHeaderValue ) ) != SIP_ERR_SUCCESS )
return FWRetValue ;
}
}
iMessageBodyPosition += iCRLFPosition + m_strCRLFDelimiter.size();
return SIP_ERR_SUCCESS ;
}
// Grammer
/*SIP-message = Request / Response
Request = Request-Line
*( message-header )
CRLF
[ message-body ]
Request-Line = Method SP Request-URI SP SIP-Version CRLF
Response = Status-Line
*( message-header )
CRLF
[ message-body ]
Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF*/
FW_RETURN_TYPE CSIPMessageParser::Parse( const std::string &strStringToParse )
{
if( strStringToParse.empty() )
return SIP_PARSE_ERR_EMPTY_STRING_TO_PARSE ;
std::string::size_type iRequestLineOrResponseStatusLineStringPosition = strStringToParse.find( m_strCRLFDelimiter ) ;
if( iRequestLineOrResponseStatusLineStringPosition == std::string::npos )
return SIP_PARSE_ERR_INVALID_SIP_MESSAGE ;
std::string strRequestLineOrResponseStatusLineString = strStringToParse.substr( 0, iRequestLineOrResponseStatusLineStringPosition ) ;
FW_RETURN_TYPE FWRetValue = SIP_ERR_SUCCESS ;
if( strRequestLineOrResponseStatusLineString.find( SIP_PROTOCOL_NAME + std::string( "/" ) ) == 0 )
FWRetValue = ParseResponseStatusLine( strRequestLineOrResponseStatusLineString ) ; // It is a SIP Response
else
FWRetValue = ParseRequestLine( strRequestLineOrResponseStatusLineString ) ; // It is a SIP Request
if( FWRetValue != SIP_ERR_SUCCESS )
return FWRetValue ;
std::string::size_type iMessageHeaderPosition = iRequestLineOrResponseStatusLineStringPosition
+ m_strCRLFDelimiter.size() ;
std::string::size_type iMessageBodyPosition = iMessageHeaderPosition ;
if( ( FWRetValue = ParseMessageHeaders( strStringToParse.substr( iMessageHeaderPosition ),
iMessageBodyPosition ) ) != SIP_ERR_SUCCESS )
return FWRetValue ;
if( iMessageBodyPosition < strStringToParse.size() )
SetSIPMessageBody( strStringToParse.substr( iMessageBodyPosition ) ) ;
return SIP_ERR_SUCCESS ;
}
std::string CSIPMessageParser::ToString() const
{
std::string strSIPMessageString = "" ;
if( m_pSIPMethodData != NULL )
strSIPMessageString = GetSIPMethod() + SIP_CONST_SPACE + m_pSIPRequestURIParser->ToString() + SIP_CONST_SPACE
+ GetSIPVersion() + m_strCRLFDelimiter ;
else
strSIPMessageString = GetSIPVersion() + SIP_CONST_SPACE + GetSIPStatusCode() + SIP_CONST_SPACE
+ GetSIPReasonPhrase() + m_strCRLFDelimiter ;
if( m_pSIPViaParser != NULL )
strSIPMessageString += ( ( m_pSIPViaParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPViaParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPViaParser->ToString() + m_strCRLFDelimiter )
: m_pSIPViaParser->ToString() ) ;
if( m_pSIPMaxForwardsParser != NULL )
strSIPMessageString += m_pSIPMaxForwardsParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPMaxForwardsParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPContactParser != NULL )
strSIPMessageString += ( ( m_pSIPContactParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPContactParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPContactParser->ToString() + m_strCRLFDelimiter )
: m_pSIPContactParser->ToString() ) ;
if( m_pSIPToParser != NULL )
strSIPMessageString += m_pSIPToParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPToParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPFromParser != NULL )
strSIPMessageString += m_pSIPFromParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPFromParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPCallIDParser != NULL )
strSIPMessageString += m_pSIPCallIDParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPCallIDParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPCSeqParser != NULL )
strSIPMessageString += m_pSIPCSeqParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPCSeqParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPExpiresParser != NULL )
strSIPMessageString += m_pSIPExpiresParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPExpiresParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPAllowParser != NULL )
strSIPMessageString += ( ( m_pSIPAllowParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPAllowParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAllowParser->ToString() + m_strCRLFDelimiter )
: m_pSIPAllowParser->ToString() ) ;
if( m_pSIPContentTypeParser != NULL )
strSIPMessageString += m_pSIPContentTypeParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPContentTypeParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPSupportedParser != NULL )
strSIPMessageString += ( ( m_pSIPSupportedParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPSupportedParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPSupportedParser->ToString() + m_strCRLFDelimiter )
: m_pSIPSupportedParser->ToString() ) ;
if( m_pSIPUserAgentParser != NULL )
strSIPMessageString += m_pSIPUserAgentParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPUserAgentParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPContentLengthParser != NULL )
strSIPMessageString += m_pSIPContentLengthParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPContentLengthParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPAcceptParser != NULL )
strSIPMessageString += ( ( m_pSIPAcceptParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPAcceptParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAcceptParser->ToString() + m_strCRLFDelimiter )
: m_pSIPAcceptParser->ToString() ) ;
if( m_pSIPAcceptEncodingParser != NULL )
strSIPMessageString += ( ( m_pSIPAcceptEncodingParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPAcceptEncodingParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAcceptEncodingParser->ToString() + m_strCRLFDelimiter )
: m_pSIPAcceptEncodingParser->ToString() ) ;
if( m_pSIPAcceptLanguageParser != NULL )
strSIPMessageString += ( ( m_pSIPAcceptLanguageParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPAcceptLanguageParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAcceptLanguageParser->ToString() + m_strCRLFDelimiter )
: m_pSIPAcceptLanguageParser->ToString() ) ;
if( m_pSIPAlertInfoParser != NULL )
strSIPMessageString += ( ( m_pSIPAlertInfoParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPAlertInfoParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAlertInfoParser->ToString() + m_strCRLFDelimiter )
: m_pSIPAlertInfoParser->ToString() ) ;
if( m_pSIPAuthenticationInfoParser != NULL )
strSIPMessageString += m_pSIPAuthenticationInfoParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAuthenticationInfoParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPAuthorizationParser != NULL )
strSIPMessageString += m_pSIPAuthorizationParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPAuthorizationParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPCallInfoParser != NULL )
strSIPMessageString += ( ( m_pSIPCallInfoParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPCallInfoParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPCallInfoParser->ToString() + m_strCRLFDelimiter )
: m_pSIPCallInfoParser->ToString() ) ;
if( m_pSIPContentDispositionParser != NULL )
strSIPMessageString += m_pSIPContentDispositionParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPContentDispositionParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPContentEncodingParser != NULL )
strSIPMessageString += ( ( m_pSIPContentEncodingParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPContentEncodingParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPContentEncodingParser->ToString() + m_strCRLFDelimiter )
: m_pSIPContentEncodingParser->ToString() ) ;
if( m_pSIPContentLanguageParser != NULL )
strSIPMessageString += ( ( m_pSIPContentLanguageParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPContentLanguageParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPContentLanguageParser->ToString() + m_strCRLFDelimiter )
: m_pSIPContentLanguageParser->ToString() ) ;
if( m_pSIPDateParser != NULL )
strSIPMessageString += m_pSIPDateParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPDateParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPErrorInfoParser != NULL )
strSIPMessageString += ( ( m_pSIPErrorInfoParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPErrorInfoParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPErrorInfoParser->ToString() + m_strCRLFDelimiter )
: m_pSIPErrorInfoParser->ToString() ) ;
if( m_pSIPInReplyToParser != NULL )
strSIPMessageString += ( ( m_pSIPInReplyToParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPInReplyToParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPInReplyToParser->ToString() + m_strCRLFDelimiter )
: m_pSIPInReplyToParser->ToString() ) ;
if( m_pSIPMimeVersionParser != NULL )
strSIPMessageString += m_pSIPMimeVersionParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPMimeVersionParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPMinExpiresParser != NULL )
strSIPMessageString += m_pSIPMinExpiresParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPMinExpiresParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPOrganizationParser != NULL )
strSIPMessageString += m_pSIPOrganizationParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPOrganizationParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPPriorityParser != NULL )
strSIPMessageString += m_pSIPPriorityParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPPriorityParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPProxyAuthenticateParser != NULL )
strSIPMessageString += m_pSIPProxyAuthenticateParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPProxyAuthenticateParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPProxyAuthorizationParser != NULL )
strSIPMessageString += m_pSIPProxyAuthorizationParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPProxyAuthorizationParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPProxyRequireParser != NULL )
strSIPMessageString += ( ( m_pSIPProxyRequireParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPProxyRequireParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPProxyRequireParser->ToString() + m_strCRLFDelimiter )
: m_pSIPProxyRequireParser->ToString() ) ;
if( m_pSIPRecordRouteParser != NULL )
strSIPMessageString += ( ( m_pSIPRecordRouteParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPRecordRouteParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPRecordRouteParser->ToString() + m_strCRLFDelimiter )
: m_pSIPRecordRouteParser->ToString() ) ;
if( m_pSIPReplyToParser != NULL )
strSIPMessageString += m_pSIPReplyToParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPReplyToParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPRequireParser != NULL )
strSIPMessageString += ( ( m_pSIPRequireParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPRequireParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPRequireParser->ToString() + m_strCRLFDelimiter )
: m_pSIPRequireParser->ToString() ) ;
if( m_pSIPRetryAfterParser != NULL )
strSIPMessageString += m_pSIPRetryAfterParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPRetryAfterParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPRouteParser != NULL )
strSIPMessageString += ( ( m_pSIPRouteParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPRouteParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPRouteParser->ToString() + m_strCRLFDelimiter )
: m_pSIPRouteParser->ToString() ) ;
if( m_pSIPServerParser != NULL )
strSIPMessageString += m_pSIPServerParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPServerParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPSubjectParser != NULL )
strSIPMessageString += m_pSIPSubjectParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPSubjectParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPTimestampParser != NULL )
strSIPMessageString += m_pSIPTimestampParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPTimestampParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPUnSupportedParser != NULL )
strSIPMessageString += ( ( m_pSIPUnSupportedParser->GetCreateStringInMultipleHeaderFormat() == false )
? ( m_pSIPUnSupportedParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPUnSupportedParser->ToString() + m_strCRLFDelimiter )
: m_pSIPUnSupportedParser->ToString() ) ;
if( m_pSIPWarningParser != NULL )
strSIPMessageString += m_pSIPWarningParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPWarningParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPWWWAuthenticateParser != NULL )
strSIPMessageString += m_pSIPWWWAuthenticateParser->GetHeaderName() + m_strColonDelimiter + SIP_CONST_SPACE
+ m_pSIPWWWAuthenticateParser->ToString() + m_strCRLFDelimiter ;
if( m_pSIPMessageBodyData != NULL )
strSIPMessageString += m_strCRLFDelimiter + GetSIPMessageBody() + m_strCRLFDelimiter ;
strSIPMessageString += m_strCRLFDelimiter ;
return strSIPMessageString ;
}
std::string CSIPMessageParser::GetBranchID()
{
std::string strBranchID = "" ;
CSIPViaParser *pSIPViaParser = GetSIPViaParser() ;
if( pSIPViaParser != NULL )
{
CSIPViaParmParser *pSIPViaParmParser = ( CSIPViaParmParser* ) pSIPViaParser->GetSIPParserList().front() ;
strBranchID = pSIPViaParmParser->GetSIPViaParmParameters()->GetParameterValue( SIP_PARAM_BRANCH ) ;
}
return strBranchID ;
}
bool CSIPMessageParser::IsSIPResponse()
{
if( GetSIPStatusCode() != "" )
{
return true ;
}
return false ;
}
bool CSIPMessageParser::IsSIPProvisionalResponse()
{
long lSIPStatusCode = atol( GetSIPStatusCode().c_str() ) ;
if( ( lSIPStatusCode >= 100 ) && ( lSIPStatusCode < 200 ) ) // Provisional Responses
{
return true ;
}
return false ;
}
bool CSIPMessageParser::IsSIPFinalResponse()
{
return ( !IsSIPProvisionalResponse() ) ;
}
bool CSIPMessageParser::IsSIP2XXFinalResponse()
{
long lSIPStatusCode = atol( GetSIPStatusCode().c_str() ) ;
if( ( lSIPStatusCode >= 200 ) && ( lSIPStatusCode < 300 ) ) // 2XX Response
{
return true ;
}
return false ;
}
bool CSIPMessageParser::IsSIPNon2XXFinalResponse()
{
return ( !IsSIPProvisionalResponse() && !IsSIP2XXFinalResponse() ) ;
}
} // End namespace