diff -r e5b3a2155e1a -r d2c4c66342f3 messagingfw/senduiservices/src/senduiserviceclient.cpp --- a/messagingfw/senduiservices/src/senduiserviceclient.cpp Thu Aug 19 10:24:00 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +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: Communicates message data to SendUILauncher server application -* -*/ - - - -#include -#include -#include - -#include -#include - -#include "senduiserviceclient.h" -#include "senduiserviceslog.h" -#include "senduilauncher.h" -#include "senduiservicecommands.h" - -typedef TBuf8 TTransferBuf; -// ======== LOCAL FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Launch SendUi -// --------------------------------------------------------------------------- -// -void RSendUiServiceClient::LaunchSendUiL( - TUid& aServiceUid, - TUid& aServiceProviderUid, - TBool& aLaunchEmbedded, - const CMessageData* aMessageData ) - { - CBufBase* buffer = CBufFlat::NewL( KMessageBufferSize ); - CleanupStack::PushL( buffer ); - - RBufWriteStream bufStream; - bufStream.Open( *buffer ); - - bufStream.WriteUint32L( aServiceProviderUid.iUid ); - TUid dataType(KSenduiMsgDataBase); - if ( aMessageData ) - { - dataType = aMessageData->DataType(); - } - bufStream.WriteUint32L( dataType.iUid ); - bufStream.WriteUint32L( aServiceUid.iUid ); - bufStream.WriteUint32L( aLaunchEmbedded ? 1 : 0); - bufStream.WriteUint32L( aMessageData ? 1 : 0); - - if ( aMessageData ) - { - aMessageData->ExternalizeL( bufStream ); - } - - bufStream.CommitL(); - bufStream.Close(); - - - LOGTEXT2(_L("RSendUiServiceClient->LaunchSendUiL: buffer size %d"), buffer->Size() ); - TInt totalSize = buffer->Size(); - TInt transferredBytes(0); - TInt blockSize(0); - - TTransferBuf transferBuffer; - - while( transferredBytes < totalSize) - { - // determine block size - if ( transferredBytes + KTransferBufferSize < totalSize ) - { - blockSize = KTransferBufferSize; - } - else - { - // the last block size - blockSize = totalSize - transferredBytes; - } - buffer->Read( transferredBytes, transferBuffer, blockSize ); - - TPckgBuf transferBufferPckg( transferBuffer ); - TPckgBuf totalSizePckg( totalSize ); - TPckgBuf blockSizePckg( blockSize ); - - SendReceive( ESendUiDataBlock, - TIpcArgs( &transferBufferPckg, &blockSizePckg, &totalSizePckg ) ); - - transferredBytes += blockSize; - } // while.. - - SendReceive( EDataSent ); - - if ( aMessageData ) - { - TInt index(0); - TInt fileHandleCount = aMessageData->AttachmentHandleArray().Count(); - - // Transfer filehandles separately - while( index < fileHandleCount ) - { - TIpcArgs ipcArgs; - aMessageData->AttachmentHandleArray()[index++].TransferToServer(ipcArgs, 0, 1); - SendReceive(ECopyFileHandle, ipcArgs); - } - } - SendReceive( ELaunchSendUi ); - - CleanupStack::PopAndDestroy(buffer); -} - -// --------------------------------------------------------------------------- -// Return service identifier -// --------------------------------------------------------------------------- -// -TUid RSendUiServiceClient::ServiceUid() const - { - return KSendUiLauncherAppServiceUid; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -RSendUiServiceClient::~RSendUiServiceClient() - { - Close(); - }