mmsharing/mmshavailability/src/musavacapabilitycontext.cpp
changeset 15 ccd8e69b5392
parent 2 b31261fd4e04
child 20 e8be2c2e049d
child 22 496ad160a278
--- a/mmsharing/mmshavailability/src/musavacapabilitycontext.cpp	Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,458 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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:   helper SIP related methods
-*
-*/
-
-
-#include <e32math.h>
-#include <uri8.h>
-#include <uriutils.h>
-#include <sip.h>
-#include <sipservertransaction.h>
-#include <sipclienttransaction.h>
-#include <sipacceptcontactheader.h>
-#include <sipcontactheader.h>
-#include <sipextensionheader.h>
-#include <siprequestelements.h>
-#include <sipresponseelements.h>
-#include <sipmessageelements.h>
-#include <sipfromheader.h>
-#include <sipaddress.h>
-#include <sipstrings.h>
-#include <sipstrconsts.h>
-#include <sdpdocument.h>
-#include <sdpcodecstringconstants.h>
-#include <sdpcodecstringpool.h>
-#include <escapeutils.h>
-
-#include "muslogger.h"
-#include "musavacapabilitycontext.h"
-
-_LIT8( KMusAssertedIndentity,"P-Asserted-Identity" );
-
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-//
-RStringF MusAvaCapabilityContext::SDPStringL( TInt aStringIndex )
-    {
-    return SdpCodecStringPool::StringPoolL().
-        StringF( aStringIndex, SdpCodecStringPool::StringTableL() );
-    }
-
-
-// ----------------------------------------------------------------------------
-// 
-// ----------------------------------------------------------------------------
-//
-RStringF MusAvaCapabilityContext::SDPStringL( const TDesC8& aString )
-    {
-    return SdpCodecStringPool::StringPoolL().OpenFStringL( aString );
-    }
-
-
-// ----------------------------------------------------------------------------
-// 
-// ----------------------------------------------------------------------------
-//
-RStringF MusAvaCapabilityContext::SIPStringL( const TDesC8& aString )
-    {
-    return SIPStrings::Pool().OpenFStringL( aString );
-    }
-
-
-// ----------------------------------------------------------------------------
-// 
-// ----------------------------------------------------------------------------
-//
-void MusAvaCapabilityContext::LocalHostL( 
-                                    const CSIPServerTransaction& aRequest,
-                                    TPtrC8& aLocalHost,
-                                    RStringF& aHostType )
-    {
-    RStringPool strPool = SdpCodecStringPool::StringPoolL();
-    
-    const CUri8& uri = aRequest.RequestElements()->RemoteUri();
-    
-    aLocalHost.Set( uri.Uri().Extract( EUriHost ) );
-    
-    if ( UriUtils::HostType( aLocalHost ) == UriUtils::EIPv6Host )
-        {
-        aHostType = strPool.StringF( SdpCodecStringConstants::EAddressType, 
-                                     SdpCodecStringPool::StringTableL() );
-        }
-    else 
-        {
-        aHostType = strPool.StringF( 
-                                SdpCodecStringConstants::EAddressTypeIP4, 
-                                SdpCodecStringPool::StringTableL() );
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// 
-// --------------------------------------------------------------------------
-//
-CUri8* MusAvaCapabilityContext::ToUriL( const TDesC8& aUri )
-    {
-    TUriParser8 uri;
-    User::LeaveIfError( uri.Parse( aUri ) );
-    
-    return CUri8::NewL( uri );
-    }
-
-    
-// --------------------------------------------------------------------------
-// 
-// --------------------------------------------------------------------------
-//
-HBufC8* MusAvaCapabilityContext::ToTextL( CSdpDocument& aSdpContent )
-    {
-    HBufC8* content = NULL;
-    
-    CBufFlat* encBuf = CBufFlat::NewL( KMUSAVAMaxLengthOfSDPMessage );
-    CleanupStack::PushL( encBuf );
-    RBufWriteStream writeStream( *encBuf, 0 );
-	writeStream.PushL();
-    aSdpContent.EncodeL( writeStream );
-    CleanupStack::PopAndDestroy();//writeStream
-    
-    content = encBuf->Ptr( 0 ).AllocL();
-    CleanupStack::PopAndDestroy( encBuf );
-
-    return content;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CSIPMessageElements& MusAvaCapabilityContext::MessageElementsL( 
-                                            const CSIPTransactionBase& aTrx )
-    {
-    const CSIPMessageElements* message = NULL;
-    
-    if ( aTrx.IsSIPClientTransaction() )
-        {
-        
-        const CSIPResponseElements* response = 
-            static_cast<const CSIPClientTransaction&>
-                ( aTrx ).ResponseElements();
-        User::LeaveIfError( !response ? KErrGeneral : KErrNone );
-        
-        message = &response->MessageElements();
-        }
-    else
-        {
-        const CSIPRequestElements* request = 
-            static_cast<const CSIPServerTransaction&>( aTrx ).RequestElements();
-        User::LeaveIfError( !request ? KErrGeneral : KErrNone );
-        
-        message = &request->MessageElements();
-        }
-        
-    return *message;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-CSIPAcceptContactHeader* MusAvaCapabilityContext::AcceptContactHeaderLC( 
-                                                            RStringF aValue )
-    {
-    CSIPAcceptContactHeader* header = CSIPAcceptContactHeader::NewLC();
-    
-    header->SetParamL( aValue );
-    header->SetParamL( SIPStrings::StringF( SipStrConsts::EExplicit ) );
-    
-    return header;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CSIPAcceptContactHeader* MusAvaCapabilityContext::AcceptContactHeaderL( 
-                                            const CSIPTransactionBase& aTrx )
-    {
-    return static_cast<const CSIPAcceptContactHeader*>
-        ( Header( SIPStrings::StringF( SipStrConsts::EAcceptContactHeader ),
-          MessageElementsL( aTrx ) ) );
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-CSIPContactHeader* MusAvaCapabilityContext::ContactHeaderLC( 
-                                                    const CUri8& aAddress, 
-                                                    RStringF aValue )
-    {
-    CUri8* uri = CUri8::NewLC( aAddress.Uri() );
-    
-    /*
-    if ( !uri->Uri().IsPresent( EUriHost ) )
-        {
-        uri->SetComponentL( 
-        SIPStrings::StringF( SipStrConsts::ELocalHost ).DesC(), EUriHost );
-        }
-    */
-                       
-    CSIPAddress* address = CSIPAddress::NewL( uri );
-    CleanupStack::Pop( uri );
-    CleanupStack::PushL( address );
-    
-    CSIPContactHeader* header = CSIPContactHeader::NewL( address );
-    CleanupStack::Pop( address );
-    CleanupStack::PushL( header );
-
-    if ( aValue != SIPStrings::StringF( SipStrConsts::EEmpty ) )
-        {
-        TInt separator = aValue.DesC().Find( KMUSAVASemicolon );
-        if ( separator < KErrNone )
-            {
-            header->SetParamL( aValue );
-            }
-        else
-            {
-            TPtrC8 head = aValue.DesC().Left( separator );
-            TPtrC8 tail = aValue.DesC().Mid( 
-                        separator + KMUSAVASemicolon().Length() );
-        
-            RStringF theHead = SIPStringL( head );
-            CleanupClosePushL( theHead );
-            RStringF theTail = SIPStringL( tail );
-            CleanupClosePushL( theTail );
-        
-            header->SetParamL( theHead );
-            header->SetParamL( theTail );
-
-            CleanupStack::PopAndDestroy();//theTail
-            CleanupStack::PopAndDestroy();//theHead
-            }
-        }
-        
-    return header;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CSIPContactHeader* MusAvaCapabilityContext::ContactHeaderL( 
-                                            const CSIPTransactionBase& aTrx )
-    {
-    return static_cast<const CSIPContactHeader*>
-        ( Header( SIPStrings::StringF( SipStrConsts::EContactHeader ), 
-                  MessageElementsL( aTrx ) ) );
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-CSIPExtensionHeader* MusAvaCapabilityContext::UserAgentHeaderLC( 
-                                                    const TDesC8& aValue )
-    {
-    return CSIPExtensionHeader::NewLC( KMUSAVASIPHeaderUserAgent, aValue );
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CSIPExtensionHeader* MusAvaCapabilityContext::UserAgentHeaderL( 
-                                            const CSIPTransactionBase& aTrx )
-    {
-    RStringF userAgentHeaderName = SIPStringL( KMUSAVASIPHeaderUserAgent );
-    CleanupClosePushL( userAgentHeaderName );
-    
-    const CSIPExtensionHeader* header = 
-        static_cast<const CSIPExtensionHeader*>
-        ( Header( userAgentHeaderName, MessageElementsL( aTrx ) ) );
-        
-    CleanupStack::PopAndDestroy();//userAgentHeaderName
-
-    return header;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-CSIPExtensionHeader* MusAvaCapabilityContext::PAssertedIdentityHeaderLC( 
-                                                    const TDesC8& aValue )
-    {
-    return CSIPExtensionHeader::NewLC( KMUSAVASIPHeaderPAssertedIdentity, 
-                                    aValue );
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CUri8& MusAvaCapabilityContext::OriginatorL( 
-                                        const CSIPServerTransaction& aTrx )
-    {
-    const CSIPRequestElements* request = aTrx.RequestElements();
-    User::LeaveIfError( !request ? KErrGeneral : KErrNone );
-    
-    const CSIPFromHeader* from = request->FromHeader();
-    
-    User::LeaveIfError( from ? KErrNone : KErrGeneral );
-
-    return from->SIPAddress().Uri8();
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CSIPHeaderBase* MusAvaCapabilityContext::Header( 
-                                    RStringF aHeaderName,
-                                    const CSIPMessageElements& aMessage )
-    {
-    TBool found = EFalse;
-    CSIPHeaderBase* header = NULL;
-    const RPointerArray<CSIPHeaderBase>& headers = aMessage.UserHeaders();
-    
-    for ( TInt i=0; i < headers.Count() && !found; i++ )
-        {
-        header = headers[i];
-        if ( header->Name() == aHeaderName )
-            {
-            found = ETrue;
-            }
-        else
-            {
-            header = NULL;
-            }
-        }
-    return header;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-const CSIPHeaderBase* MusAvaCapabilityContext::Header( 
-                                    RStringF aHeaderName,
-                                    const CSIPMessageElements& aMessage,
-                                    TUint aIndex )
-    {
-    TInt found = -1;
-    CSIPHeaderBase* header = NULL;
-    const RPointerArray<CSIPHeaderBase>& headers = aMessage.UserHeaders();
-    
-    for ( TInt i=0; i < headers.Count() && found != aIndex; i++ )
-        {
-        header = headers[i];
-        if ( header->Name() == aHeaderName )
-            {
-            found++;
-            }
-        else
-            {
-            header = NULL;
-            }
-        }
-    return header;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-TUint MusAvaCapabilityContext::HeaderCount( 
-                                    RStringF aHeaderName,
-                                    const CSIPMessageElements& aMessage )
-    {
-    TUint found = 0;
-    CSIPHeaderBase* header = NULL;
-    const RPointerArray<CSIPHeaderBase>& headers = aMessage.UserHeaders();
-    
-    for ( TInt i=0; i < headers.Count(); i++ )
-        {
-        header = headers[i];
-        if ( header->Name() == aHeaderName )
-            {
-            found++;
-            }
-        }
-    return found;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-// 
-CDesCArrayFlat* MusAvaCapabilityContext::PAssertedIdentityHeaderL(
-                                    const CSIPMessageElements& aMessage )
-    { 
-    MUS_LOG( "mus: [MUSAVA] -> MusAvaCapabilityContext::PAssertedIdentityHeaderL" )
-    
-    RStringF p = SIPStrings::Pool().OpenFStringL( KMusAssertedIndentity() );
-    CleanupClosePushL( p );	
-    TInt headerCount = HeaderCount( p,aMessage); 
-    
-    CDesCArrayFlat* headers = new( ELeave ) CDesCArrayFlat( 2 );
-    CleanupStack::PushL( headers );
-
-    for ( TInt i=0; i < headerCount; i++ )
-        {        
-        const CSIPHeaderBase* pAssertedId = 
-        		MusAvaCapabilityContext::Header( p, aMessage, i );      
-                        
-        if ( pAssertedId )
-            {
-            HBufC8* value = pAssertedId->ToTextValueLC();
-            CSIPAddress* address = CSIPAddress::DecodeL( *value );
-            CleanupStack::PushL( address );                 
-            const TDesC8& uriInPAssertedId = address->Uri8().Uri().UriDes();
-        	if ( uriInPAssertedId.Length() > 0 )
-    	        {
-    	        HBufC* uriBuf = 
-    	            EscapeUtils::ConvertToUnicodeFromUtf8L( uriInPAssertedId );
-    	        CleanupStack::PushL( uriBuf );  
-    	        headers->AppendL( *uriBuf );
-    	        CleanupStack::PopAndDestroy( uriBuf );
-        		}
-            CleanupStack::PopAndDestroy( address );
-            CleanupStack::PopAndDestroy( value );
-            }
-        }	
-    
-    CleanupStack::Pop( headers );
-    CleanupStack::PopAndDestroy( &p );
-
-    MUS_LOG( "mus: [MUSAVA] <- MusAvaCapabilityContext::PAssertedIdentityHeaderL" )
-    return headers;
-    }
-