diff -r 000000000000 -r 094583676ce7 PECengine/StorageManager2/ClientSrc/RPEngStorageSubFolderClient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/StorageManager2/ClientSrc/RPEngStorageSubFolderClient.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,332 @@ +/* +* Copyright (c) 2002 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: Sub-client to managed particular session slot +* +*/ + + +// INCLUDE FILES +#include "RPEngStorageSubFolderClient.h" + +#include "RPEngStorageClient.h" +#include "TPEngStorageServerMessages.h" + +#include "PresenceDebugPrint.h" + +// PEC Engine internal constants +#include "PEngInternalGlobalConsts.h" + +// MACROS +#define RETURN_IF_NOT_CONNECTED()\ + if(!iConnected)\ + {\ + return KErrDisconnected;\ + } + +#define SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType )\ + TIpcArgs messArgs;\ + messArgs.Set( KMessageSlot0, &aStoreId );\ + messArgs.Set( KMessageSlot1, aStoreType ); + +// ============================ MEMBER FUNCTIONS =============================== +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::RPEngStorageSubFolderClient +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +RPEngStorageSubFolderClient::RPEngStorageSubFolderClient( ) + { + } + +// Destructor +RPEngStorageSubFolderClient::~RPEngStorageSubFolderClient() + { + } + +// ============================================================================= +// ============================ Close/Connect FUNCTIONS ======================== +// ============================================================================= + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::Connect() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::Connect( + RPEngStorageClient& aStorageMainClient, + const TDesC8& aSessionName ) + { + PENG_DP_TXT( "RPEngStorageSubFolderClient::Connect()" ); + + TIpcArgs messArguments; + messArguments.Set( KMessageSlot0, &aSessionName ); + + TInt err( RSubSessionBase::CreateSubSession( + aStorageMainClient, + EMainSessCreateFolderSubSession, + messArguments ) ); + + iConnected = ( err == KErrNone ? ETrue : EFalse ); + return err; + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::Close() +// ----------------------------------------------------------------------------- +// +void RPEngStorageSubFolderClient::Close() + { + PENG_DP_TXT( "RPEngStorageSubFolderClient::Close()" ); + + + CloseSubSession( EMainSessCloseSubSession ); + iConnected = EFalse; + } + + +// ============================================================================= +// ======================= Storage FUNCTIONS =================================== +// ============================================================================= + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::Store() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::Store( + const TDesC& aStoreId, + TPEngStorageType aStoreType, + const TDesC8& aData ) + { + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType ); + messArgs.Set( KMessageSlot2, &aData ); + return SendReceive( EFolderSubSessWriteEntry, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::Retrieve() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::Retrieve( + const TDesC& aStoreId, + TPEngStorageType aStoreType, + TDes8& aData ) + { + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType ); + messArgs.Set( KMessageSlot2, &aData ); + return SendReceive( EFolderSubSessReadEntry, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::Delete() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::Delete( + const TDesC& aStoreId, + TPEngStorageType aStoreType ) + { + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType ); + return SendReceive( EFolderSubSessRemoveEntry, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::StoreEntryLocked() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::StoreEntryLocked( + const TDesC& aStoreId, + TPEngStorageType aStoreType, + TPengStorageLockPriority aPriority ) const + { + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType ); + messArgs.Set( KMessageSlot2, aPriority ); + return SendReceive( EFolderSubSessIsEntryLocked, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::LockStoreEntry() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::LockStoreEntry( + const TDesC& aStoreId, + TPEngStorageType aStoreType, + TPengStorageLockPriority aPriority, + TBool aCreateEntry ) const + { + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType ); + // priority and Create flag will be transported as one TInt value + TInt value( aPriority ); + value |= ( aCreateEntry ? KLockEntryCreateMask : 0 ); + messArgs.Set( KMessageSlot2, value ); + + return SendReceive( EFolderSubSessLockEntry, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::UnlockStoreEntry() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::UnlockStoreEntry( + const TDesC& aStoreId, + TPEngStorageType aStoreType ) const + { + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aStoreId, aStoreType ); + return SendReceive( EFolderSubSessUnlockEntry, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::BufferServerSideNotifications() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::BufferServerSideNotifications( + TInt aCount ) + { + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( KMessageSlot0, aCount ); + return SendReceive( EFolderSubSessSuspendNotification, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::ReleaseServerSideBuffering() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::ReleaseServerSideBuffering( + TInt aCount ) + { + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( KMessageSlot0, aCount ); + return SendReceive( EFolderSubSessResumeNotification, messArgs ); + } + + +// ============================================================================= +// ======================= NOTIFY FUNCTIONS ==================================== +// ============================================================================= + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::StartListeningSIdsChanges() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::StartListeningSIdsChanges( + const TDesC& aEngagedSIds ) + { + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( KMessageSlot0, &aEngagedSIds ); + return SendReceive( EFolderSubSessListenSIDsChanges, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::UpdateListenSIdsChangesScout() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::UpdateListenSIdsChangesScout( + const TDesC& aEngagedSIds ) + { + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( KMessageSlot0, EFolderSubSessListenSIDsChanges ); + messArgs.Set( KMessageSlot1, &aEngagedSIds ); + return SendReceive( EFolderSubSessUpdateListenSIDsScout, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::ReloadSIdsChangesScout() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::ReloadListenSIdsChangesScout( + TRequestStatus& aStatus ) + { + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( KMessageSlot0, EFolderSubSessListenSIDsChanges ); + SendReceive( EFolderSubSessReloadAsynchronousScout, messArgs, aStatus ); + return KErrNone; + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::FetchChangedSIdsIndexes() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::FetchChangedSIdsIndexes( + TDes& aChangedIds ) + { + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( KMessageSlot0, EFolderSubSessListenSIDsChanges ); + messArgs.Set( KMessageSlot1, &aChangedIds ); + return SendReceive( EFolderSubSessFetchChangedSIDsIndexes, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::StopListeningSIdsChanges() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::StopListeningSIdsChanges() + { + // add Start listen ID to the message container, + // this request is sort of cancel of request + RETURN_IF_NOT_CONNECTED(); + TIpcArgs messArgs; + messArgs.Set( 0, EFolderSubSessListenSIDsChanges ); + return SendReceive( EFolderSubSessCancelRequest, messArgs ); + } + + +// ----------------------------------------------------------------------------- +// RPEngStorageSubFolderClient::NotifyChangedSIDsBlind() +// ----------------------------------------------------------------------------- +// +TInt RPEngStorageSubFolderClient::NotifyChangedSIdBlind( + const TDesC& aPackedChangedSId, + TPEngStorageType aStoreType ) + { + PENG_DP( D_PENG_LIT( "RPEngStorageSubFolderClient::NotifyChangedSIdBlind: %S" ), + &aPackedChangedSId ); + + RETURN_IF_NOT_CONNECTED(); + + SET_MESSAGE_ARGUMENTS( aPackedChangedSId, aStoreType ); + + return SendReceive( EFolderSubSessNotifyChangedSIDs, messArgs ); + } + +// End of File + +