diff -r 2f5c9ee7098c -r 072a5fa0c63b voicerecorder/NewServiceSrc/CNewFileServiceBase.cpp --- a/voicerecorder/NewServiceSrc/CNewFileServiceBase.cpp Thu Aug 19 09:57:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* -* Copyright (c) 2002-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: Base class for app servers -* -*/ - - - -// INCLUDE FILES -#include -#include -#include - -#include "CNewFileServiceBase.h" -#include "NewFileServiceDefs.h" - -// CONSTANTS -const TInt KFilenameArrayGranularity( 2 ); - - -// ============================ MEMBER FUNCTIONS ============================= - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::CNewFileServiceBase -// C++ default constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------------------------- -// -EXPORT_C CNewFileServiceBase::CNewFileServiceBase():iError(0) - { - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::~CNewFileServiceBase -// -// --------------------------------------------------------------------------- -// -// Destructor -EXPORT_C CNewFileServiceBase::~CNewFileServiceBase() - { - delete iFilenameArray; - delete iGenericParams; - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::DeserializeGenericParamsL -// -// --------------------------------------------------------------------------- -// -void CNewFileServiceBase::DeserializeGenericParamsL( const RMessage2& aMessage ) - { - if ( !iGenericParams ) - { - iGenericParams = CAiwGenericParamList::NewL(); - } - else - { - iGenericParams->Reset(); - } - - TInt dataLength( aMessage.GetDesLengthL( ENewServiceIndexFileName ) ); - if ( dataLength == 0 ) - { - return; - } - - HBufC8* buffer = HBufC8::NewLC( dataLength ); - TPtr8 ptr( buffer->Des() ); - aMessage.ReadL( ENewServiceIndexFileName, ptr ); - - RDesReadStream stream( ptr ); - iGenericParams->InternalizeL( stream ); - CleanupStack::PopAndDestroy(); // buffer - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::ServiceL -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CNewFileServiceBase::ServiceL( const RMessage2& aMessage ) - { -#ifdef _DEBUG - RDebug::Print( _L("CNewFileServiceBase::ServiceL %d"), - aMessage.Function() ); -#endif - switch ( aMessage.Function() ) - { - case ECreateNewFile: - { - TPckgBuf< TNewServiceParamPack > paramPack; - aMessage.ReadL( ENewServiceIndexParams, paramPack ); - - if ( !iFilenameArray ) - { - iFilenameArray = new ( ELeave ) - CDesCArrayFlat( KFilenameArrayGranularity ); - } - iFilenameArray->Reset(); - - DeserializeGenericParamsL( aMessage ); - - // Copy the message handle so we can reply to the message when - // the service observer gets called - iPendingMessage = aMessage; - - HandleNewFileL( this, *iFilenameArray, paramPack().iType, - paramPack().iMultipleFiles ); - - break; - } - - case ENewFileToHandle: - { - TPckgBuf< TNewServiceParamPack > paramPack; - aMessage.ReadL( ENewServiceIndexParams, paramPack ); - - DeserializeGenericParamsL( aMessage ); - - // Adopt file handle from client - RFile file; - TInt err = file.AdoptFromClient( aMessage, - ENewServiceIndexFsHandle, - ENewServiceIndexFileHandle ); -#ifdef _DEBUG - RDebug::Print( _L("adopt error: %d" ), err ); -#endif - // Copy the message handle so we can reply to the message when - // the service observer gets called - iPendingMessage = aMessage; - - HandleNewFileL( this, file, paramPack().iType ); - - break; - } - - case EGetFilenameArrayLength: - { - // Calculate the size of the buffer needed to transfer the - //filenames to the client side - TPckgBuf< TInt > lengthBuf; - TInt count( iFilenameArray->MdcaCount() ); -#ifdef _DEBUG - RDebug::Print( _L("Filename array count: %d"), count ); -#endif - TInt length = sizeof( TInt ) + count * sizeof( TUint16 ); - for ( TInt i( 0 ); i < count; i++ ) - { - length += iFilenameArray->MdcaPoint( i ).Size(); - } - - lengthBuf = length; - aMessage.WriteL( ENewServiceIndexParams, lengthBuf ); - aMessage.Complete( KErrNone ); - break; - } - - case EGetFilenameArray: - { - // Allocate a buffer with the same size as in the client side - TInt length( aMessage.GetDesMaxLengthL( ENewServiceIndexParams ) ); - HBufC8* buffer = HBufC8::NewLC( length ); - - TPtr8 ptr = buffer->Des(); - RDesWriteStream stream( ptr ); - - // Stream the filename array to the buffer - TInt count( iFilenameArray->MdcaCount() ); - stream.WriteInt32L( count ); - for ( TInt i( 0 ); i < count; i++ ) - { - TPtrC filename = iFilenameArray->MdcaPoint( i ); - stream.WriteUint16L( filename.Length() ); - stream.WriteL( filename ); - } - - stream.CommitL(); - - // Return the buffer to the client side - aMessage.WriteL( ENewServiceIndexParams, ptr ); - aMessage.Complete( KErrNone ); - CleanupStack::PopAndDestroy(); // buffer - - // notify the application that the transfer is complete and - // it's ok to quit / whatever - ServiceCompleteL(); - - break; - } - default: - { - // Complete old message if still open - if ( !iPendingMessage.IsNull() ) - { - iPendingMessage.Complete( KErrCancel ); - } - - CApaAppServiceBase::ServiceL(aMessage); - break; - } - } - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::HandleCompletedNewServiceL -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CNewFileServiceBase::HandleCompletedNewServiceL( - TBool aReturnValue ) - { - // Message was already completed in ServiceL - if ( iPendingMessage.IsNull() ) - { - return; - } - - TNewServiceParamPack pack; - TPckgBuf< TNewServiceParamPack > paramPack; - pack.iReturnValue = aReturnValue; - paramPack = pack; - - iPendingMessage.WriteL( ENewServiceIndexParams, paramPack ); - if(iError != KErrAbort) - { - iPendingMessage.Complete( KErrNone ); - } - else - { - iPendingMessage.Complete( KErrAbort ); - iError = 0; - } - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::GenericParams -// -// --------------------------------------------------------------------------- -// -EXPORT_C CAiwGenericParamList* CNewFileServiceBase::GenericParams() - { - return iGenericParams; - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::GenericParams -// -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CNewFileServiceBase::GetErrorCode() - { - return iError; - } - - -// --------------------------------------------------------------------------- -// CNewFileServiceBase::GenericParams -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CNewFileServiceBase::SetErrorCode(TInt aError) - { - iError = aError; - } - - -// End of File