diff -r 000000000000 -r 307788aac0a8 rtp/rtpstack/src/rtpsdes.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rtp/rtpstack/src/rtpsdes.cpp Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,232 @@ +/* +* Copyright (c) 2002-2003 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + + +// INCLUDES +#include + +#include "rtputil.h" +#include "rtpsdes.h" + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------------------------- +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------------------------- +// +CRtpSDES::CRtpSDES() + { + } + +// --------------------------------------------------------------------------- +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------------------------- +// +void CRtpSDES::ConstructL() + { + for ( TInt k = 0; k < ERTCP_NUM_OF_SDES_ITEMS; k++ ) + { + iSDESBuf[k] = HBufC8::NewL( KMaxSdesItemSize ); + iSDESItems[k] = const_cast( iSDESBuf[k]->Des().Ptr() ); + Mem::FillZ( iSDESItems[k], KMaxSdesItemSize ); + iSDESItemsSize[k] = 0; + } + + iSndSSRCArray = new ( ELeave ) CArrayFixFlat( 4 ); + } + +// --------------------------------------------------------------------------- +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CRtpSDES* CRtpSDES::NewL() + { + CRtpSDES* self = new ( ELeave ) CRtpSDES(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); // self + return self; + } + +// --------------------------------------------------------------------------- +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CRtpSDES* CRtpSDES::NewL( const TRtpSdesParams& aSDES ) + { + CRtpSDES* self = new ( ELeave ) CRtpSDES(); + CleanupStack::PushL( self ); + self->ConstructL(); + self->SetSDES( aSDES ); + CleanupStack::Pop(); // self + return self; + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CRtpSDES::~CRtpSDES() + { + for ( TInt k = 0; k < ERTCP_NUM_OF_SDES_ITEMS; k++ ) + { + delete iSDESBuf[k]; + iSDESItemsSize[k] = 0; + } + if (iSndSSRCArray) + { + iSndSSRCArray->Reset(); + delete iSndSSRCArray; + } + } + +// --------------------------------------------------------------------------- +// CRtpSDES::SetSDES() +// +// --------------------------------------------------------------------------- +// +void CRtpSDES::SetSDES( const TRtpSdesParams& aSDES ) + { + + iSDESItemsSize[ERTCP_SDES_CNAME] = ( aSDES.iCName ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_CNAME], ( aSDES.iCName ).Ptr(), + iSDESItemsSize[ERTCP_SDES_CNAME] ); + *( iSDESItems[ERTCP_SDES_CNAME] + iSDESItemsSize[ERTCP_SDES_CNAME] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_NAME] = ( aSDES.iUserName ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_NAME], ( aSDES.iUserName ).Ptr(), + iSDESItemsSize[ERTCP_SDES_NAME] ); + *( iSDESItems[ERTCP_SDES_NAME] + iSDESItemsSize[ERTCP_SDES_NAME] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_EMAIL] = ( aSDES.iEmail ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_EMAIL], ( aSDES.iEmail ).Ptr(), + iSDESItemsSize[ERTCP_SDES_EMAIL] ); + *( iSDESItems[ERTCP_SDES_EMAIL] + iSDESItemsSize[ERTCP_SDES_EMAIL] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_PHONE] = ( aSDES.iPhoneNumber ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_PHONE], ( aSDES.iPhoneNumber ).Ptr(), + iSDESItemsSize[ERTCP_SDES_PHONE] ); + *( iSDESItems[ERTCP_SDES_PHONE] + iSDESItemsSize[ERTCP_SDES_PHONE] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_LOC] = ( aSDES.iLocation ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_LOC], ( aSDES.iLocation ).Ptr(), + iSDESItemsSize[ERTCP_SDES_LOC] ); + *( iSDESItems[ERTCP_SDES_LOC] + iSDESItemsSize[ERTCP_SDES_LOC] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_TOOL] = ( aSDES.iSwToolName ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_TOOL], ( aSDES.iSwToolName ).Ptr(), + iSDESItemsSize[ERTCP_SDES_TOOL] ); + *( iSDESItems[ERTCP_SDES_TOOL] + iSDESItemsSize[ERTCP_SDES_TOOL] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_NOTE] = ( aSDES.iNoticeStatus ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_NOTE], ( aSDES.iNoticeStatus ).Ptr(), + iSDESItemsSize[ERTCP_SDES_NOTE] ); + *( iSDESItems[ERTCP_SDES_NOTE] + iSDESItemsSize[ERTCP_SDES_NOTE] ) = '\0'; + + iSDESItemsSize[ERTCP_SDES_PRIV] = ( aSDES.iPrivate ).Length(); + Mem::Copy( iSDESItems[ERTCP_SDES_PRIV], ( aSDES.iPrivate ).Ptr(), + iSDESItemsSize[ERTCP_SDES_PRIV] ); + *( iSDESItems[ERTCP_SDES_PRIV] + iSDESItemsSize[ERTCP_SDES_PRIV] ) = '\0'; + + } + + +// --------------------------------------------------------------------------- +// CRtpSDES::GetSDES() +// +// --------------------------------------------------------------------------- +// +void CRtpSDES::GetSDES( TRtpSdesParams& aSDES ) + { + ( aSDES.iCName ).Set( iSDESItems[ERTCP_SDES_CNAME], + iSDESItemsSize[ERTCP_SDES_CNAME] ); + + ( aSDES.iUserName ).Set( iSDESItems[ERTCP_SDES_NAME], + iSDESItemsSize[ERTCP_SDES_NAME] ); + + ( aSDES.iEmail ).Set( iSDESItems[ERTCP_SDES_EMAIL], + iSDESItemsSize[ERTCP_SDES_EMAIL] ); + + ( aSDES.iPhoneNumber).Set( iSDESItems[ERTCP_SDES_PHONE], + iSDESItemsSize[ERTCP_SDES_PHONE] ); + + ( aSDES.iLocation ).Set( iSDESItems[ERTCP_SDES_LOC], + iSDESItemsSize[ERTCP_SDES_LOC] ); + + ( aSDES.iSwToolName ).Set( iSDESItems[ERTCP_SDES_TOOL], + iSDESItemsSize[ERTCP_SDES_TOOL] ); + + ( aSDES.iNoticeStatus ).Set( iSDESItems[ERTCP_SDES_NOTE], iSDESItemsSize[ERTCP_SDES_NOTE] ); + + ( aSDES.iPrivate ).Set( iSDESItems[ERTCP_SDES_PRIV], iSDESItemsSize[ERTCP_SDES_PRIV] ); + } + +// --------------------------------------------------------------------------- +// CRtpSDES::AddSsrcToSdesL() +// +// --------------------------------------------------------------------------- +// +void CRtpSDES::AddSsrcToSdesL( const TRtpSSRC aSSRC ) + { + TInt index = 0; + TBool fFoundSSRC = EFalse; + TInt totalSSRC = iSndSSRCArray->Count(); + + if ( totalSSRC > 0 ) + { + for ( index = 0; index < totalSSRC; index++ ) + { + if ( iSndSSRCArray->At( index ) == aSSRC ) + { + fFoundSSRC = ETrue; + } + } + if ( !fFoundSSRC ) + { + iSndSSRCArray->AppendL( aSSRC ); + } + } + else //first SSRC, added to array + { + iSndSSRCArray->AppendL( aSSRC ); + } + } + +// --------------------------------------------------------------------------- +// TBool CRtpSDES::GetSdesSsrc() +// +// --------------------------------------------------------------------------- +// +TBool CRtpSDES::GetSdesSsrc( TRtpSSRC aSSRC ) + { + TInt totalSSRC = iSndSSRCArray->Count(); + + for ( TInt index = 0; index < totalSSRC; index++ ) + { + if ( iSndSSRCArray->At( index ) == aSSRC ) + { + return ETrue; + } + } + return EFalse; + } + + +// End of File