--- a/brandingserver/bsserver/cbssession.cpp Fri May 28 18:27:27 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1728 +0,0 @@
-/*
-* Copyright (c) 2006 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: CBSSession.cpp
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32base.h>
-#include <apgcli.h>
-
-#include "cbssession.h"
-#include "cbsserver.h"
-#include "debugtrace.h"
-#include "cbsbrandhandler.h"
-#include "cbsstoragemanager.h"
-#include "cbsstorage.h"
-#include "cbsbitmap.h"
-//#include "cbselement.h"
-#include "rbsobjowningptrarray.h"
-#include "bselementfactory.h"
-#include "bsimportconstants.h"
-#include <badesca.h>
-#include <s32buf.h>
-#include <s32mem.h>
-#include <utf.h>
-#include <e32property.h>
-
-// ==============================================================
-// ======================== SESSION =============================
-// ==============================================================
-
-// Two-phased constructor.
-CBSSession* CBSSession::NewL()
- {
- TRACE( T_LIT("CBSSession::NewL begin") );
- CBSSession* self = new( ELeave ) CBSSession();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- TRACE( T_LIT("CBSSession::NewL end") );
- return self;
- }
-
-// Symbian OS default constructor can leave.
-void CBSSession::ConstructL()
- {
- }
-
-
-// destructor
-CBSSession::~CBSSession()
- {
- TRACE( T_LIT("CBSSession[%d]::~CBSSession()"), this );
-
- if( Server() )
- {
- Server()->SessionDied( this );
- }
- delete iText;
- delete iBuffer;
- delete iBranding;
- delete iSeveralData;
-
-#ifdef __WINSCW__
- if( iStorageManager )
- {
- iStorageManager->WriteIbyFiles();
- }
-#endif
- delete iStorageManager;
- delete iSessionInfo;
-
- }
-
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CBSSession::CBSSession()
- {
- }
-
-// ---------------------------------------------------------
-// CBSSession::CreateL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::CreateL()
- {
- TRACE( T_LIT("CBSSession[%d]::CreateL()"), this );
- Server()->SessionCreatedL( this );
- }
-
-// ---------------------------------------------------------
-// CBSSession::ServiceL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::ServiceL( const RMessage2 &aMessage )
- {
-
- /*if( !iSessionInfo )
- {
- TRAPD( err, ExtractInfoL( aMessage ) );
- TRACE( T_LIT("CBSSession::ServiceL() ExtractInfoL returned with [%d]"), err );
- }
- */
- if( DispatchMessageL( aMessage ) )
- {
- if( !iMessageCompleted )
- {
- aMessage.Complete( KErrNone );
- }
- }
- }
-
-// ---------------------------------------------------------
-// CBSSession::ServiceError
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::ServiceError( const RMessage2& aMessage,
- TInt aError )
- {
- aMessage.Complete( aError );
- }
-
-// ---------------------------------------------------------
-// CBSSession::HandleBackupStateL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::HandleBackupStateL( TBackupState aState )
- {
- iIsBackup = ETrue ;
- switch( aState )
- {
- case EBackupNotActive: // backup is complete
- {
- // release session lock
- iBackupActive = EFalse;
- if( iStorageManager )
- {
- iStorageManager->ReleaseLockL();
- }
-
- // Sending backup active state change event after unlocking it
- if( iObserverActive )
- {
- iObserverMessage.Complete( KErrNone );
- iObserverActive = EFalse;
- }
-
- break;
- }
- case EBackupActive: // backup activated
- {
-
- // Lock session. Branding data is not available until
- // backup is completed.
- iBackupActive = ETrue;
-
- // Sending backup active state change event before locking it
- if( iObserverActive )
- {
- iObserverMessage.Complete( KErrNone );
- iObserverActive = EFalse;
- }
-
- if( iStorageManager )
- {
- iStorageManager->LockStorage();
- }
- break;
- }
- default:
- {
- // unknown state
- }
- }
-
-
- }
-
-// ---------------------------------------------------------
-// CBSSession::DispatchMessageL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CBSSession::DispatchMessageL( const RMessage2& aMessage )
- {
- TRACE( T_LIT("CBrandingSession[%d]::DispatchMessageL() %d"),
- this, aMessage.Function() );
- iMessageCompleted = EFalse;
- TBool msgNeedsToBeCompleted = ETrue;
-
- if( iBackupActive )
- {
- // if backup is active, we don't take requests.
- // We could take some requests which do not require disk
- // operations. This is not a good solution and a better one should be
- // investigated. I'm running out of time.
- TInt msg = aMessage.Function() ;
- if( msg == EBSObserveGetChange ||
- msg == EBSObserveGetBackupState ||
- msg == EBSObserveBrand)
- {
- //allow to do the operation
- }
- else
- {
- User::Leave( KErrNotReady );
- }
-
- }
-
- switch( aMessage.Function() )
- {
- case EBSInitInstall:
- {
- InitUpdateL( aMessage, EBSTxInstall );
- break;
- }
- case EBSInitUninstall:
- {
- InitUpdateL( aMessage, EBSTxUninstall );
- break;
- }
- case EBSInitAppend:
- {
- InitUpdateL( aMessage, EBSTxAppend );
- break;
- }
- case EBSInitReplace:
- {
- InitUpdateL( aMessage, EBSTxReplace );
- break;
- }
- case EBSInitAccess:
- {
- InitAccessL( aMessage );
- break;
- }
- case EBSPrepareText:
- {
- GetTextL( aMessage );
- break;
- }
- case EBSGetText:
- {
- if( iText )
- {
- aMessage.WriteL( 2, *iText );
- }
- else
- {
- aMessage.WriteL( 2, KNullDesC() );
- }
- break;
- }
-
- case EBSIsBrandUpdateRequired:
- isBrandUpdateRequiredL (aMessage);
- break;
-
- case EBSGetInt:
- {
- GetIntL( aMessage );
- break;
- }
-
- case EBSPrepareBuffer:
- {
- GetBufferL( aMessage );
- break;
- }
-
- case EBSGetBuffer:
- {
- if( iBuffer )
- {
- aMessage.WriteL( 2, *iBuffer );
- }
- else
- {
- aMessage.WriteL( 2, KNullDesC8() );
- }
- break;
- }
-
- case EBSGetFile:
- {
- GetFileL( aMessage );
- break;
- }
-
- case EBSPrepareSeveral:
- {
- PrepareSeveralL( aMessage );
- break;
- }
-
- case EBSGetSeveral:
- {
- GetSeveralL( aMessage );
- break;
- }
-
- case EBSPrepareStructure:
- {
- PrepareStructureL( aMessage );
- break;
- }
-
- case EBSGetStructure:
- {
- GetStructureL( aMessage );
- break;
- }
-
- case EBSStartTransaction:
- {
- StartTransactionL( aMessage );
- break;
- }
-
- case EBSStopTransaction:
- {
- StopTransactionL( aMessage );
- break;
- }
- case EBSCancelTransaction:
- {
- CancelTransactionL( aMessage );
- break;
- }
-
- case EBSInstall:
- {
- InstallL( aMessage );
- break;
- }
-
- case EBSReplace:
- {
- ReplaceL( aMessage );
- break;
- }
-
- case EBSAppend:
- {
- AppendL( aMessage );
- break;
- }
-
- case EBSRemoveBrand:
- {
- RemoveBrandL( aMessage );
- break;
- }
- case EBSRemoveApplication:
- {
- RemoveApplicationL( aMessage );
- break;
- }
-
- case EBSObserveBrand:
- {
- if( iObserverActive )
- {
- // complete the old observer request with KErrCancel
- iObserverMessage.Complete( KErrCancel );
- }
- iObserverMessage = aMessage;
- iObserverActive = ETrue;
- msgNeedsToBeCompleted = EFalse;
- break;
- }
-
- case EBSObserveGetNewVersion:
- {
- TInt newVersion = GetNewVersionL();
- TPckgC<TInt> pack( newVersion );
- aMessage.WriteL( 0, pack );
- break;
- }
-
- // Get what change happen
- case EBSObserveGetChange:
- {
- TPckgC<TInt> pack( iIsBackup );
- aMessage.WriteL( 0, pack );
- break ;
- }
-
- // Get the backup state
- case EBSObserveGetBackupState:
- {
- TPckgC<TInt> pack( iBackupActive );
- aMessage.WriteL( 0, pack );
- break ;
- }
-
- default:
- {
- User::Leave( KErrNotSupported );
- break;
- }
- }
-
- return msgNeedsToBeCompleted;
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::InitUpdateL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::InitUpdateL( const RMessage2 &aMessage, TTransactionType aType)
- {
- TRACE( T_LIT("CBSSession::InitUpdateL: begin TTransactionType[%d] "),aType );
-
- // get the application id
- TInt bufferSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* appId = HBufC8::NewLC( bufferSize );
- TPtr8 appPtr = appId->Des();
- aMessage.ReadL( 0, appPtr );
-
- HBufC* tmpAppId = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *appId );
- CleanupStack::PopAndDestroy( appId );
-
- delete iApplicationId;
- iApplicationId = tmpAppId;
-
- // get the brand id
- bufferSize = aMessage.GetDesLength( 1 );
- HBufC8* streamBuf = HBufC8::NewLC( bufferSize );
- TPtr8 streamPtr = streamBuf->Des();
- aMessage.ReadL( 1, streamPtr );
-
- RDesReadStream stream;
- CleanupClosePushL( stream );
- stream.Open( streamPtr );
-
- TInt descriptorLength = stream.ReadInt16L();
- HBufC8* brandId = HBufC8::NewLC( descriptorLength );
- TPtr8 brandPtr = brandId->Des();
- stream.ReadL( brandPtr, descriptorLength );
-
- HBufC* tmpBrandId = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *brandId );
- CleanupStack::PopAndDestroy( brandId );
- delete iBrandId;
- iBrandId = tmpBrandId;
-
- descriptorLength = stream.ReadInt16L();
- HBufC8* defaultBrandId = HBufC8::NewLC( descriptorLength );
- TPtr8 defaultPtr = defaultBrandId->Des();
- stream.ReadL( defaultPtr, descriptorLength );
-
- HBufC* tmpDefaultBrandId = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *defaultBrandId );
- CleanupStack::PopAndDestroy( defaultBrandId );
- delete iDefaultBrandId;
- iDefaultBrandId = tmpDefaultBrandId;
-
- CleanupStack::PopAndDestroy( 2, streamBuf ); // stream, streamBuf
-
-
- // get the language id
- iLanguageId = (TLanguage)aMessage.Int2();
-
- // get the version
- iReserved = aMessage.Int3();
-
- // Check if brand is discarded and client is trying to access/append/replace on that
- // give error message saying brand not found so that client will not use that brand
- if(aType == EBSTxAccess || aType == EBSTxAppend || aType == EBSTxReplace )
- {
- if(!iStorageManager)
- {
- iStorageManager = CBSStorageManager::NewL( this, *iApplicationId );
- }
-
- TBool brandDiscarded = EFalse ;
- brandDiscarded = iStorageManager->CheckBrandDiscarded(*iApplicationId, *iBrandId) ;
-
- if(brandDiscarded)
- {
- TRACE( T_LIT("CBSSession::InitUpdateL: Brand discarded!->LeaveWith KErrNotFound") );
- ///Server()->DisplaySessionInfoL( this, KErrNotFound );
- User::Leave( KErrNotFound );
- }
- }
-
- if( aType == EBSTxAppend )
- {
- PrepareAppendL();
- }
- else if( aType == EBSTxReplace )
- {
- PrepareReplaceL();
- }
- else if(aType == EBSTxUninstall)
- {
- if( !iStorageManager )
- {
- iStorageManager = CBSStorageManager::NewL( this, *iApplicationId );
- }
- // if any client is accessing same brand leave with KErrInUse.
- // check if the brand has any active clients
- TBool brandActive = EFalse;
- CBSServer* server = Server();
- if( server )
- {
- brandActive = server->MatchSessionUninstallL( *iApplicationId, *iBrandId,
- this);
- }
-
- if(brandActive)
- {
- TRACE( T_LIT("CBSSession::InitUpdateL: UnInstallation aborted -> LeaveWith KErrInUse") );
- //Server()->DisplaySessionInfoL( this,KErrInUse);
- //when changing this errorcode: please read the note in
- //UninstallL() ( installer.cpp )
- User::Leave( KErrInUse );
- }
- }
- else if( aType == EBSTxInstall )
- {
- if( !iStorageManager )
- {
- iStorageManager = CBSStorageManager::NewL( this, *iApplicationId );
- }
-
- HBufC* drive = HBufC::NewLC(3);
- TRAPD( err, iStorageManager->GetNewestVersionL( *iApplicationId,
- *iBrandId,
- iLanguageId ) );
- if( ( err == KErrNotFound ) || ( err == KErrPathNotFound ) )
- {
- CleanupStack::PopAndDestroy(drive);
- // this brand is not yet there, which is the correct situation here
- // for starting install. We can just ignore this error
- }
-
- else if( !err )
- {
- // there was no error, therefore this brand already exists in the ROM
- // (Z drive).
- // we leave with KErrAlreadyExists
- if( 0 == (drive->Des().Compare(KBSZDrive)) )
- {
- CleanupStack::PopAndDestroy(drive);
- User::Leave( KErrAlreadyExists );
- }
- else
- {
- //PopAndDestroy drive as it is not needed any longer.
- CleanupStack::PopAndDestroy(drive);
-
- // if any client is accessing same brand leave with KErrInUse.
- // check if the brand has any active clients
- TBool brandActive = EFalse;
- CBSServer* server = Server();
- if( server )
- {
- brandActive = server->MatchSessionL( *iApplicationId, *iBrandId,
- iLanguageId, this, iReserved );
- }
-
- if(brandActive == EFalse)
- {
- TRACE( T_LIT("CBSSession::InitUpdateL: Brand not used -> remove") );
- iStorageManager->RemoveBrandL( *iApplicationId, *iBrandId,
- iLanguageId, iReserved );
- }
- else
- {
- TRACE( T_LIT("CBSSession::InitUpdateL: Installation aborted->LeaveWith KErrInUse") );
- //Server()->DisplaySessionInfoL( this,KErrInUse);
- //when changing this errorcode: please read the note in
- //UninstallL() ( installer.cpp )
- User::Leave( KErrInUse );
- }
- }
- }
- else
- {
- CleanupStack::PopAndDestroy(drive);
- // some other error
- TRACE( T_LIT("CBSSession::InitUpdateL: ERROR aType[%d] LeaveWith[%d]"),aType,err );
- User::Leave( err );
- }
- }
-
-
- iInitialized = ETrue;
-
- TRACE( T_LIT("Server initialized") );
- }
-
-
-
-// ---------------------------------------------------------
-// CBSSession::PrepareAppendL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::PrepareAppendL()
- {
- if( !iStorageManager )
- {
- iStorageManager = CBSStorageManager::NewL( this, *iApplicationId );
- }
-
- RFile brandHandle;
- iStorageManager->BrandHandleL( *iApplicationId,
- *iBrandId, iLanguageId, brandHandle, iReserved );
- CleanupClosePushL( brandHandle );
- RFileReadStream oldStream;
- oldStream.Attach( brandHandle );
- CleanupClosePushL( oldStream );
- TInt version = oldStream.ReadInt16L();
-
- TInt count = oldStream.ReadInt16L();
-
- if( !iStorageManager->Storage() )
- {
- iStorageManager->CreateStorageL();
- }
- for( TInt i = 0; i < count; i++ )
- {
- MBSElement* element = InternalizeElementL( oldStream, ETrue );
- CleanupDeletePushL( element );
- // transfers ownership
- iStorageManager->Storage()->AppendElementsL( element );
- CleanupStack::Pop(); // element
- }
-
- iStorageManager->Storage()->SetVersion( iReserved );
- iStorageManager->Storage()->SetStorageIdL( *iBrandId );
- iStorageManager->Storage()->SetApplicationIdL( *iApplicationId );
- iStorageManager->Storage()->SetLanguageL( iLanguageId );
-
- CleanupStack::PopAndDestroy( 2 ); // oldStream, brandHandle
- iAppending = ETrue;
- }
-// ---------------------------------------------------------
-// CBSSession::PrepareReplaceL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::PrepareReplaceL()
- {
- PrepareAppendL();
- }
-
-// ---------------------------------------------------------
-// CBSSession::InitAccessL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::InitAccessL( const RMessage2 &aMessage )
- {
- InitUpdateL( aMessage, EBSTxAccess );
-
- iBranding = CBSBrandHandler::NewL( *iApplicationId, *iBrandId, *iDefaultBrandId,
- iLanguageId, this, iReserved );
-
-
- iAccessInit = ETrue;
- TRACE( T_LIT("Access initialized") );
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::GetTextL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::GetTextL( const RMessage2 &aMessage )
- {
- if( !iAccessInit )
- {
- User::Leave( KErrNotReady );
- }
- TInt idSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* idBuffer = HBufC8::NewLC( idSize );
- TPtr8 ptrId = idBuffer->Des();
- aMessage.ReadL( 0, ptrId );
-
- HBufC* temp = iBranding->GetTextL( ptrId );
- delete iText;
- iText = temp;
-
- CleanupStack::PopAndDestroy( idBuffer );
- TPckgC<TInt> pack( iText->Size() );
- aMessage.WriteL( 1, pack );
- TRACE( T_LIT("aMessage.WriteL( 1, %d );"), iText->Size() );
- }
-
-void CBSSession :: isBrandUpdateRequiredL (const RMessage2 &aMessage)
-{
- if( !iAccessInit )
- {
- User::Leave( KErrNotReady );
- }
- TInt updateRequired = iBranding->isBrandUpdateRequiredL ();
-// iValue = updateRequired;
- TPckgC <TInt> pack (updateRequired);
- aMessage.WriteL( 0, pack );
-}
-// ---------------------------------------------------------
-// CBSSession::GetIntL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::GetIntL( const RMessage2 &aMessage )
- {
- if( !iInitialized )
- {
- User::Leave( KErrNotReady );
- }
- TInt idSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* idBuffer = HBufC8::NewLC( idSize );
- TPtr8 ptrId = idBuffer->Des();
- aMessage.ReadL( 0, ptrId );
-
- iValue = iBranding->GetIntL( ptrId );
- TPckgC<TInt> pack( iValue );
- aMessage.WriteL( 1, pack );
- CleanupStack::PopAndDestroy( idBuffer );
- }
-
-// ---------------------------------------------------------
-// CBSSession::GetBufferL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::GetBufferL( const RMessage2 &aMessage )
- {
- if( !iAccessInit )
- {
- User::Leave( KErrNotReady );
- }
- TInt idSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* idBuffer = HBufC8::NewLC( idSize );
- TPtr8 ptrId = idBuffer->Des();
- aMessage.ReadL( 0, ptrId );
-
- HBufC8* temp = iBranding->GetBufferL( ptrId );
- delete iBuffer;
- iBuffer = temp;
-
- CleanupStack::PopAndDestroy( idBuffer );
- TPckgC<TInt> pack( iBuffer->Size() );
- aMessage.WriteL( 1, pack );
- TRACE( T_LIT("aMessage.WriteL( 1, %d );"), iBuffer->Size() );
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::GetFileL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::GetFileL( const RMessage2 &aMessage )
- {
- TRACE( T_LIT("CBSSession::GetFileL begin") );
- if( !iInitialized )
- {
- User::Leave( KErrNotReady );
- }
- TInt idSize( aMessage.GetDesLength( 2 ) );
- HBufC8* idBuffer = HBufC8::NewLC( idSize );
- TPtr8 ptrId = idBuffer->Des();
- aMessage.ReadL( 2, ptrId );
-
- RFile file;
- iBranding->GetFileL( ptrId, file );
-
- CleanupStack::PopAndDestroy( idBuffer );
-
- User::LeaveIfError( file.TransferToClient( aMessage, 0 ) );
-
- iMessageCompleted = ETrue;
-
- file.Close();
- TRACE( T_LIT("CBSSession::GetFileL end") );
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::InternalizeElementIdsL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::InternalizeElementIdsL( RReadStream& aStream, RBSObjOwningPtrArray<HBufC8>& aArray )
- {
- TInt count = aStream.ReadInt16L();
-
- for(TInt i = 0; i < count; i++ )
- {
- TInt length = aStream.ReadInt16L();
- HBufC8* id = HBufC8::NewLC( length );
- TPtr8 ptrId = id->Des();
- aStream.ReadL( ptrId, length );
- aArray.AppendL( id );
- CleanupStack::Pop( id );
- }
- }
-
-// ---------------------------------------------------------
-// CBSSession::PrepareTextL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::PrepareSeveralL( const RMessage2 &aMessage )
- {
- if( !iInitialized )
- {
- User::Leave( KErrNotReady );
- }
-
- TInt msgSize( aMessage.GetDesLength( 1 ) );
-
- HBufC8* idBuffer = HBufC8::NewLC( msgSize );
- TPtr8 ptrId = idBuffer->Des();
- aMessage.ReadL( 1, ptrId );
-
- RDesReadStream idStream;
- CleanupClosePushL( idStream );
- idStream.Open( ptrId );
-
- RBSObjOwningPtrArray<HBufC8> idArray;
- CleanupClosePushL( idArray );
-
- InternalizeElementIdsL( idStream, idArray );
-
-
- MBSElement* texts = iBranding->GetSeveralL( idArray );
-
- CleanupStack::PopAndDestroy(); // idArray
- CleanupStack::PopAndDestroy(); // idStream
- CleanupStack::PopAndDestroy(); // idBuffer
-
- CleanupDeletePushL( texts );
-
- // FIXME magic number
- CBufFlat* data = CBufFlat::NewL( 2000 );
- CleanupStack::PushL( data );
-
- RBufWriteStream writeStream;
- CleanupClosePushL( writeStream );
- writeStream.Open( *data );
-
- texts->ExternalizeL( writeStream );
-
- CleanupStack::PopAndDestroy(); // writeStream
-
- delete iSeveralData;
- iSeveralData = data;
- CleanupStack::Pop( data );
-
- CleanupStack::PopAndDestroy(); // texts
-
- delete iBuffer;
- iBuffer = NULL;
- iBuffer = iSeveralData->Ptr(0).AllocL();
-
- delete iSeveralData;
- iSeveralData = NULL;
- TPckgC<TInt> pack( iBuffer->Size() );
- TRACE( T_LIT("DispatchMessageL - EPlatSecPrepareSeveral writing size %d"), iBuffer->Size() );
- aMessage.WriteL( 0, pack );
-
- }
-
-// ---------------------------------------------------------
-// CBSSession::GetSeveralTextL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::GetSeveralL( const RMessage2 &aMessage )
- {
- if( !iInitialized )
- {
- User::Leave( KErrNotReady );
- }
- aMessage.WriteL( 0, *iBuffer );
-
- delete iBuffer;
- iBuffer = NULL;
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::PrepareStructureL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::PrepareStructureL( const RMessage2 &aMessage )
- {
- if( !iInitialized )
- {
- User::Leave( KErrNotReady );
- }
- TInt idSize( aMessage.GetDesLength( 1 ) );
-
- RBSObjOwningPtrArray<MBSElement> valueArray;
- CleanupClosePushL( valueArray );
-
- HBufC8* idBuffer = HBufC8::NewLC( idSize );
- TPtr8 ptrId = idBuffer->Des();
- aMessage.ReadL( 1, ptrId );
-
-
- MBSElement* extElement = iBranding->GetStructureL( ptrId );
- CleanupDeletePushL( extElement );
- // FIXME magic number
- CBufFlat* data = CBufFlat::NewL( 2000 );
- CleanupStack::PushL( data );
-
- RBufWriteStream writeStream;
- CleanupClosePushL( writeStream );
- writeStream.Open( *data );
-
- extElement->ExternalizeL( writeStream );
-
- CleanupStack::PopAndDestroy(); // writeStream
-
- delete iSeveralData;
- iSeveralData = data;
- CleanupStack::Pop( data );
-
- CleanupStack::PopAndDestroy( extElement );
-
- delete iBuffer;
- iBuffer = NULL;
- iBuffer = iSeveralData->Ptr(0).AllocL();
-
- delete iSeveralData;
- iSeveralData = NULL;
- TPckgC<TInt> pack( iBuffer->Size() );
- TRACE( T_LIT("DispatchMessageL - EPlatSecPrepareSeveral writing size %d"), iBuffer->Size() );
- aMessage.WriteL( 0, pack );
-
-
- CleanupStack::PopAndDestroy(idBuffer);
-
- CleanupStack::PopAndDestroy(); // valueArray
-
- }
-
-// ---------------------------------------------------------
-// CBSSession::GetStructureL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::GetStructureL( const RMessage2 &aMessage )
- {
- if( !iInitialized )
- {
- User::Leave( KErrNotReady );
- }
- aMessage.WriteL( 0, *iBuffer );
-
- delete iBuffer;
- iBuffer = NULL;
- }
-
-
-
-// ---------------------------------------------------------
-// CBSSession::InstallL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::InstallL( const RMessage2 &aMessage )
- {
- TRACE( T_LIT( "CBSSession::InstallL begin") );
- if( !iInitialized || !iStorageManager )
- {
- User::Leave( KErrNotReady );
- }
-
- if( !iStorageManager->Storage() )
- {
- iStorageManager->CreateStorageL();
- }
-
- iStorageManager->ConnectTransactionL( *iApplicationId,
- *iBrandId, iLanguageId, EFalse, iReserved );
-
- TInt msgSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* buffer = HBufC8::NewLC( msgSize );
- TPtr8 ptr = buffer->Des();
- aMessage.ReadL( 0, ptr );
-
- RDesReadStream stream;
- CleanupClosePushL( stream );
- stream.Open( ptr );
-
- MBSElement* element = InternalizeElementL( stream );
- CleanupDeletePushL( element );
-
- iStorageManager->Storage()->SetVersion( iReserved );
- iStorageManager->Storage()->SetStorageIdL( *iBrandId );
- iStorageManager->Storage()->SetApplicationIdL( *iApplicationId );
- iStorageManager->Storage()->SetLanguageL( iLanguageId );
- // transfers ownership
- iStorageManager->Storage()->AppendElementsL( element );
-
- CleanupStack::Pop(); // element
- CleanupStack::PopAndDestroy( 2, buffer );
- iWriteNeeded = ETrue;
- TRACE( T_LIT( "CBSSession::InstallL end") );
- }
-
-// ---------------------------------------------------------
-// CBSSession::ReplaceL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::ReplaceL( const RMessage2 &aMessage )
- {
- TRACE( T_LIT( "CBSSession::ReplaceL begin") );
- if( !iInitialized || !iStorageManager )
- {
- User::Leave( KErrNotReady );
- }
-
- iStorageManager->ConnectTransactionL( *iApplicationId,
- *iBrandId, iLanguageId, EFalse, iReserved );
-
- TInt msgSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* buffer = HBufC8::NewLC( msgSize );
- TPtr8 ptr = buffer->Des();
- aMessage.ReadL( 0, ptr );
-
- RDesReadStream stream;
- CleanupClosePushL( stream );
- stream.Open( ptr );
-
- MBSElement* element = InternalizeElementL( stream );
- CleanupDeletePushL( element );
-
- // transfers ownership
- iStorageManager->Storage()->ReplaceElementL( element );
-
- CleanupStack::Pop(); // element
- CleanupStack::PopAndDestroy( 2, buffer );
- iWriteNeeded = ETrue;
- TRACE( T_LIT( "CBSSession::ReplaceL end") );
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::AppendL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::AppendL( const RMessage2 &aMessage )
- {
- TRACE( T_LIT( "CBSSession::AppendL begin") );
- if( !iInitialized || !iStorageManager )
- {
- User::Leave( KErrNotReady );
- }
-
- iStorageManager->ConnectTransactionL( *iApplicationId,
- *iBrandId, iLanguageId, EFalse, iReserved );
-
- TInt msgSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* buffer = HBufC8::NewLC( msgSize );
- TPtr8 ptr = buffer->Des();
- aMessage.ReadL( 0, ptr );
-
- RDesReadStream stream;
- CleanupClosePushL( stream );
- stream.Open( ptr );
-
- MBSElement* element = InternalizeElementL( stream );
- CleanupDeletePushL( element );
-
- iStorageManager->Storage()->SetVersion( iReserved );
- iStorageManager->Storage()->SetStorageIdL( *iBrandId );
- iStorageManager->Storage()->SetApplicationIdL( *iApplicationId );
- iStorageManager->Storage()->SetLanguageL( iLanguageId );
- // transfers ownership
- iStorageManager->Storage()->AppendElementsL( element );
-
- CleanupStack::Pop(); // element
- CleanupStack::PopAndDestroy( 2, buffer );
- iWriteNeeded = ETrue;
- TRACE( T_LIT( "CBSSession::AppendL end") );
- }
-
-// ---------------------------------------------------------
-// CBSSession::StartTransactionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::StartTransactionL( const RMessage2& /*aMessage*/ )
- {
- if( !iStorageManager )
- {
- iStorageManager = CBSStorageManager::NewL( this, *iApplicationId );
- }
- // if we are appending or replacing, we don't need to
- // create storage
- if( !iAppending )
- {
- iStorageManager->CreateStorageL();
- }
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::CancelTransactionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::CancelTransactionL( const RMessage2 &aMessage )
- {
- // get the application id
- TInt bufferSize( aMessage.GetDesLength( 0 ) );
-
- HBufC8* appId = HBufC8::NewLC( bufferSize );
- TPtr8 appPtr = appId->Des();
- aMessage.ReadL( 0, appPtr );
-
-
- // get the brand id
- bufferSize = aMessage.GetDesLength( 1 );
- HBufC8* brandId = HBufC8::NewLC( bufferSize );
- TPtr8 brandPtr = brandId->Des();
- aMessage.ReadL( 1, brandPtr );
-
- // get the language id
- TLanguage language = (TLanguage)aMessage.Int2();
-
- // get the version
- TInt version = aMessage.Int3();
-
-
- HBufC* tmpBrandId = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *brandId );
- CleanupStack::PopAndDestroy( brandId );
- CleanupStack::PushL( tmpBrandId );
- HBufC* tmpAppId = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *appId );
- CleanupStack::PushL( tmpAppId );
-
- // check if the transaction is correct
- iStorageManager->ConnectTransactionL( *tmpAppId,
- *tmpBrandId, iLanguageId,
- EFalse, iReserved );
-
- CleanupStack::PopAndDestroy( 2, tmpBrandId ); // tmpBrandId, tmpAppId
- CleanupStack::PopAndDestroy( appId );
- // cancel the transaction
- iStorageManager->CancelTransactionL();
- iWriteNeeded = EFalse;
- }
-
-// ---------------------------------------------------------
-// CBSSession::StopTransactionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::StopTransactionL( const RMessage2 &aMessage )
- {
- if( !iStorageManager )
- {
- // transaction not found
- User::Leave( KErrNotFound );
- }
- if( iAppending )
- {
- // find next available version number
- TInt nextVersion = iStorageManager->NextAvailableVersionL();
- iStorageManager->SetVersion( nextVersion );
- iStorageManager->Storage()->SetVersion( nextVersion );
- }
-
- if( iWriteNeeded )
- {
- iReserved = iStorageManager->WriteStorageFilesL();
- iWriteNeeded = EFalse;
- }
-
- delete iStorageManager;
- iStorageManager = NULL;
-
- TPckgC<TInt> pack( iReserved );
- aMessage.WriteL( 0, pack );
-
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::InternalizeElementL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-MBSElement* CBSSession::InternalizeElementL( RReadStream& aStream, TBool aAppending /*= EFalse*/ )
- {
- MBSElement* returnValue = NULL;
-
- TBSElementType type = (TBSElementType)aStream.ReadInt16L();
- TInt idSize = aStream.ReadInt16L();
- HBufC8* elementId = HBufC8::NewLC( idSize );
- TPtr8 elementIdPtr = elementId->Des();
- aStream.ReadL( elementIdPtr, idSize );
-
-
- switch( type )
- {
- case EBSInt:
- {
- TInt intData = aStream.ReadInt16L();
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- EBSInt,
- intData );
- break;
- }
- case EBSText:
- {
- TInt textSize = aStream.ReadInt16L();
- HBufC* textData = HBufC::NewLC( textSize );
-
- TPtr textPtr = textData->Des();
- aStream.ReadL( textPtr, textSize );
-
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- type,
- *textData );
-
- CleanupStack::Pop( textData );
- break;
- }
-
- case EBSFile:
- {
- TInt nameSize = aStream.ReadInt16L();
- HBufC* fileName = HBufC::NewLC( nameSize );
-
- TPtr filePtr = fileName->Des();
- aStream.ReadL( filePtr, nameSize );
-
- if( !aAppending )
- {
- // we are installing, so the filename is pointing to a file
- // that has to be installed
- // Install file and get the filename without path
- HBufC* strippedName = iStorageManager->InstallFileLC( *fileName );
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- type,
- *strippedName );
- CleanupStack::Pop( strippedName );
- CleanupStack::PopAndDestroy( fileName );
- }
- else
- {
- // we are appending, so this is really the filename
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- type,
- *fileName );
- CleanupStack::Pop( fileName );
- }
- break;
- }
-
- case EBSList:
- {
- RBSObjOwningPtrArray<MBSElement> listData;
- CleanupClosePushL( listData );
- TInt listCount = aStream.ReadInt16L();
- for( TInt i = 0; i < listCount; i++ )
- {
- MBSElement* listElement = InternalizeElementL( aStream );
- CleanupDeletePushL( listElement );
- listData.AppendL( listElement );
- CleanupStack::Pop(); // listElement
- }
-
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- EBSList,
- listData );
- CleanupStack::Pop(); // listData
- break;
- }
- case EBSBuffer:
- {
- TInt bufferSize = aStream.ReadInt16L();
- HBufC8* buffer = HBufC8::NewLC( bufferSize );
-
- TPtr8 buffPtr = buffer->Des();
- aStream.ReadL( buffPtr, bufferSize );
-
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- EBSBuffer,
- *buffer );
-
- CleanupStack::Pop( buffer );
- break;
- }
- case EBSBitmap:
- {
- TInt length = aStream.ReadInt16L();
- HBufC8* fileId = HBufC8::NewLC( length );
-
- TPtr8 fileIdPtr = fileId->Des();
- aStream.ReadL( fileIdPtr, length );
-
- TInt bitmapId = aStream.ReadInt16L();
- TInt maskId = aStream.ReadInt16L();
- TInt skinId = aStream.ReadInt16L();
- TInt skinMaskId = aStream.ReadInt16L();
-
-
- CBSBitmap* bitmap = CBSBitmap::NewLC( bitmapId,
- maskId,
- skinId,
- skinMaskId,
- fileIdPtr );
-
- returnValue = BSElementFactory::CreateBSElementL( *elementId,
- EBSBitmap,
- bitmap );
- CleanupStack::Pop( bitmap );
- CleanupStack::PopAndDestroy( fileId );
- break;
- }
-
- default:
- {
- User::Leave( KErrArgument );
- break;
- }
- }
-
- CleanupStack::PopAndDestroy( elementId );
-
- return returnValue;
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::MatchSessionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CBSSession::MatchSessionL( const TDesC& aApplicationId,
- const TDesC& aBrandId,
- TLanguage aLanguageId,
- TInt aReserved )
- {
- TBool returnValue = EFalse;
- if( iApplicationId && iBrandId )
- {
- if( ( 0 == iApplicationId->Compare( aApplicationId ) ) &&
- ( 0 == iBrandId->Compare( aBrandId ) ) &&
- ( iLanguageId == aLanguageId ) &&
- ( iReserved == aReserved ))
- {
- returnValue = ETrue;
- }
- }
-
- return returnValue;
- }
-
-// ---------------------------------------------------------
-// CBSSession::MatchSessionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CBSSession::MatchSessionUninstallL( const TDesC& aApplicationId,
- const TDesC& aBrandId)
- {
- TBool returnValue = EFalse;
- if( iApplicationId && iBrandId )
- {
- if( ( 0 == iApplicationId->Compare( aApplicationId ) ) &&
- ( 0 == iBrandId->Compare( aBrandId ) ) )
- {
- returnValue = ETrue;
- }
- }
-
- return returnValue;
- }
-// ---------------------------------------------------------
-// CBSSession::BrandUpdatedL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::BrandUpdatedL( const TDesC& aApplicationId,
- const TDesC& aBrandId,
- TLanguage aLanguageId,
- TInt /*aReserved*/ )
- {
- TRACE( T_LIT( "CBSSession::BrandUpdatedL begin aAppId[%S] aBrandId[%S]"), &aApplicationId, &aBrandId );
- iIsBackup = EFalse ;
- if( iApplicationId && iBrandId )
- {
- if( ( 0 == iApplicationId->Compare( aApplicationId ) ) &&
- ( 0 == iBrandId->Compare( aBrandId ) ) &&
- ( iLanguageId == aLanguageId ) )
- {
- // this event is for us
- // complete the observer request from client
- if( iObserverActive )
- {
- iObserverMessage.Complete( KErrNone );
- iObserverActive = EFalse;
- }
- }
- }
- TRACE( T_LIT( "CBSSession::BrandUpdatedL end") );
- }
-
-
-// ---------------------------------------------------------
-// CBSSession::RemoveBrandL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::RemoveBrandL( const RMessage2& /*aMessage*/ )
- {
- TRACE( T_LIT( "CBSSession::RemoveBrandL begin") );
- if( !iInitialized || !iStorageManager )
- {
- User::Leave( KErrNotReady );
- }
-
- iStorageManager->RemoveBrandL( *iApplicationId, *iBrandId,
- iLanguageId, iReserved );
-
-
-
- TRACE( T_LIT( "CBSSession::RemoveBrandL end") );
- }
-
-// ---------------------------------------------------------
-// CBSSession::RemoveApplicationL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CBSSession::RemoveApplicationL( const RMessage2& /*aMessage*/ )
- {
- TRACE( T_LIT( "CBSSession::RemoveApplicationL begin") );
- if( !iInitialized || !iStorageManager )
- {
- User::Leave( KErrNotReady );
- }
- iStorageManager->RemoveApplicationL( *iApplicationId );
- TRACE( T_LIT( "CBSSession::RemoveApplicationL end") );
- }
-
-// ---------------------------------------------------------
-// CBSSession::GetNewVersionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TInt CBSSession::GetNewVersionL()
- {
- if( !iStorageManager )
- {
- iStorageManager = CBSStorageManager::NewL( this, KNullDesC );
- }
-
- return iStorageManager->GetNewestVersionL( *iApplicationId, *iBrandId, iLanguageId );
- }
-
-
-// CBSSessionInfo
-CBSSession::CBSSessionInfo* CBSSession::CBSSessionInfo::NewL( const TDesC& aFileName,
- const TDesC& aCaption,
- TThreadId aThreadId,
- TProcessId aProcessId )
- {
- CBSSessionInfo* self = new( ELeave ) CBSSessionInfo( aThreadId, aProcessId );
- CleanupStack::PushL( self );
- self->ConstructL( aFileName, aCaption );
- CleanupStack::Pop( self );
- return self;
- }
-void CBSSession::CBSSessionInfo::ConstructL( const TDesC& aFileName, const TDesC& aCaption )
- {
- iFileName = aFileName.AllocL();
- iCaption = aCaption.AllocL();
- }
-CBSSession::CBSSessionInfo::CBSSessionInfo( TThreadId aThreadId, TProcessId aProcessId )
-: iThreadId( aThreadId ),
- iProcessId( aProcessId )
- {
- }
-CBSSession::CBSSessionInfo::~CBSSessionInfo()
- {
- delete iFileName;
- delete iCaption;
- }
-
-const TDesC& CBSSession::CBSSessionInfo::FileName()
- {
- return *iFileName;
- }
-const TDesC& CBSSession::CBSSessionInfo::Caption()
- {
- return *iCaption;
- }
-
-TThreadId CBSSession::CBSSessionInfo::ThreadId()
- {
- return iThreadId;
- }
-TProcessId CBSSession::CBSSessionInfo::ProcessId()
- {
- return iProcessId;
- }
-
-
-// ---------------------------------------------------------------------------
-// CBSSession::ExtractInfoL
-// Extracts some information from the specified RMessage2 and saves it.
-// ---------------------------------------------------------------------------
-//
-void CBSSession::ExtractInfoL( const RMessage2& aMessage )
- {
- TRACE( T_LIT( "CBSSession::ExtractInfoL begin") );
- //Collect all necessary data
- RThread thread;
- TInt getProcessErr,getClientThreadErr;
- getClientThreadErr = aMessage.Client( thread );
- CleanupClosePushL( thread );
-
- if ( KErrNone == getClientThreadErr )
- {
- TRACE( T_LIT( "CBSSession::ExtractInfoL Client retrieved OK") );
- TThreadId threadId = thread.Id();
- RProcess process;
- getProcessErr = thread.Process( process );
- CleanupClosePushL( process );
- if ( getProcessErr == KErrNone )
- {
- TRACE( T_LIT( "CBSSession::ExtractInfoL Processfilename retrieved OK") );
- TFileName fileName = process.FileName();
- TParsePtrC parser( fileName );
- TPtrC processFileNameAndExt( parser.NameAndExt() );
-
- RApaLsSession session;
- TInt connectErr = session.Connect();
- User :: LeaveIfError (connectErr);
- session.GetAllApps();
- CleanupClosePushL( session );
-
- TApaAppInfo info;
- TPtrC captionPtr( KNullDesC );
- TPtrC printCaptionPtr( KNullDesC );
- TPtrC fullName( KNullDesC );
- while ( KErrNone == session.GetNextApp( info ) )
- {
- fullName.Set( info.iFullName );
- printCaptionPtr.Set( info.iCaption );
- if( KErrNotFound != fullName.Find( processFileNameAndExt ) )
- {
- captionPtr.Set( info.iCaption );
- TRACE( T_LIT( "CBSSession::ExtractInfoL caption saved: %S"),&captionPtr );
- break;
- }
- }
-
- CBSSessionInfo* temp =
- CBSSessionInfo::NewL( processFileNameAndExt,
- captionPtr,
- threadId,
- process.Id() );
- TRACE( T_LIT( "CBSSession::ExtractInfoL SessionInfo object creation OK") );
- delete iSessionInfo;
- iSessionInfo = NULL;
- iSessionInfo = temp;
- CleanupStack::PopAndDestroy( &session );
- }
- CleanupStack::PopAndDestroy( &process );
- }
- CleanupStack::PopAndDestroy( &thread );
- TRACE( T_LIT( "CBSSession::ExtractInfoL end") );
- }
-
-
-// ---------------------------------------------------------------------------
-// CBSSession::FileName
-// ---------------------------------------------------------------------------
-//
-const TDesC& CBSSession::FileName()
- {
- TRACE( T_LIT( "CBSSession::FileName begin") );
- if ( iSessionInfo )
- {
- TRACE( T_LIT( "CBSSession::FileName SessionInfo exists") );
- return iSessionInfo->FileName();
- }
- else
- {
- TRACE( T_LIT( "CBSSession::FileName SessionInfo does not exist") );
- return KNullDesC;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CBSSession::Caption
-// ---------------------------------------------------------------------------
-//
-const TDesC& CBSSession::Caption()
- {
- TRACE( T_LIT( "CBSSession::Caption begin") );
- if ( iSessionInfo )
- {
- TRACE( T_LIT( "CBSSession::Caption SessionInfo exists") );
- return iSessionInfo->Caption();
- }
- else
- {
- TRACE( T_LIT( "CBSSession::Caption SessionInfo does not exist") );
- return KNullDesC;
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CBSSession::ThreadId
-// ---------------------------------------------------------------------------
-//
-TInt CBSSession::ThreadId( TThreadId& aThreadId )
- {
- TRACE( T_LIT( "CBSSession::ThreadId begin") );
- TInt err( KErrNotFound );
- if ( iSessionInfo )
- {
- TRACE( T_LIT( "CBSSession::ThreadId SessionInfo exists") );
- aThreadId = iSessionInfo->ThreadId();
- err = KErrNone;
- }
- return err;
- }
-
-
-// ---------------------------------------------------------------------------
-// CBSSession::ProcessId
-// ---------------------------------------------------------------------------
-//
-TInt CBSSession::ProcessId( TProcessId& aProcessId )
- {
- TRACE( T_LIT( "CBSSession::ProcessId begin") );
- TInt err( KErrNotFound );
- if ( iSessionInfo )
- {
- TRACE( T_LIT( "CBSSession::ProcessId SessionInfo exists") );
- aProcessId = iSessionInfo->ProcessId();
- err = KErrNone;
- }
- return err;
- }
-
-
-// ---------------------------------------------------------------------------
-// CBSSession::InfoAvailable
-// ---------------------------------------------------------------------------
-//
-TBool CBSSession::InfoAvailable()
- {
- return iSessionInfo ? ETrue : EFalse;
- }
-
-// END OF FILE
-
-