PECengine/StorageManager2/ClientSrc/RPEngStorageSubFolderClient.cpp
changeset 0 094583676ce7
--- /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
+
+