--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/StorageManager2/ClientSrc/CPEngStorageManagerFactory.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,314 @@
+/*
+* 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: Factory of Storage Manager
+*
+*/
+
+
+
+#ifndef __CPENGSTORAGEMANAGERFACTORY_H__
+#define __CPENGSTORAGEMANAGERFACTORY_H__
+
+// INCLUDES
+#include <e32base.h>
+#include "RPEngStorageClient.h"
+#include "MPEngStorageFactory.h"
+
+#include "RObjectArray.h"
+
+
+// FORWARD DECLARATIONS
+class CPEngStorageManagerWatcher;
+class CPEngStorageManager;
+class CPEngSessionSlotId;
+class CPEngSessionSlotState;
+class MPEngGlobalEventObserver;
+
+
+/**
+ * Factory of Storage Manager
+ * It holds all active Watchers of the storage manager
+ * There is always one watcher per each session slot which is
+ * shared by all storage manager instances accessing this session slot
+ *
+ * @lib PEngStoreMan2.dll
+ * @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngStorageManagerFactory ):
+ public CActive,
+ public MPEngStorageFactory
+ {
+public: // Constructors and destructor
+
+ /**
+ * Instance of the storage factory, it is created if needed
+ *
+ * @since 3.0
+ * @param
+ * @return
+ */
+ static CPEngStorageManagerFactory* InstanceLC();
+
+ /**
+ * Gets pointer to the Manager factory it is exists
+ * if not then NULL pointer
+ *
+ * @since 3.0
+ * @param
+ * @return
+ */
+ static CPEngStorageManagerFactory* Instance();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPEngStorageManagerFactory();
+
+public: // New functions for reference counting support
+
+ /**
+ * Openes handle new handle to Storage Manager Factory
+ *
+ * @since 3.0
+ */
+ void Open();
+
+ /**
+ * Closes handle to the Storage Manager Factory
+ *
+ * @since 3.0
+ */
+ void Close();
+
+public: // virtual Functions of the CActive
+
+ /**
+ * Handles an active object’s request completion event.
+ * @since 3.0
+ */
+ void RunL();
+
+ /**
+ * Handles a leave occurring in the request completion
+ * event handler RunL()
+ * @since 3.0
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * Implements cancellation of an outstanding request.
+ * This function is called as part of the active object’s Cancel().
+ * @since 3.0
+ */
+ void DoCancel();
+
+public: // New Functions from MPEngStorageFactory
+
+ /**
+ * Remove Storage watcher,
+ * @see <MPEngStorageFactory.h>
+ */
+ void CloseStorageWatcher(
+ CPEngStorageManagerWatcher* aStorageWatcher );
+
+ /**
+ * Increases reference counter of Factory
+ * @see <MPEngStorageFactory.h>
+ */
+ void OpenWatcher();
+
+ /**
+ * Storage Manager main client
+ * @see <MPEngStorageFactory.h>
+ */
+ RPEngStorageClient& MainClient();
+
+public: // New Functions of the base class
+
+ /**
+ * Retrieves Storage Manager instance
+ * Ownership is passed to the caller
+ * To get Storage manager which has handle to the correct
+ * sub-folder of the Storage,
+ * Server address and user name has to be specified.
+ *
+ * @since 3.0
+ * @param aSessionSlot session slot Class which caries
+ * unique information about the session
+ * @return MPEngStorageManager type pointer,
+ * ownership is passed to the caller
+ */
+ CPEngStorageManager* StorageManagerL(
+ const CPEngSessionSlotId& aSessionSlot );
+
+
+ /**
+ * Retrieves Storage Manager Watcher pointer
+ * When this method is called,
+ * Reference counter is increased and when user does not
+ * need watcher, close shall be called
+ *
+ * To get Storage manager Watcher which has handle to
+ * the correct sub-folder of the Storage,
+ * Server address and user name has to be specified
+ *
+ * @since 3.0
+ * @param aSessionSlot session slot Class which caries
+ * unique information about the session
+ * @return MPEngStorageManagerWatcher type pointer,
+ * ownership is passed to the caller
+ */
+ CPEngStorageManagerWatcher* StorageManagerWatcherL(
+ const CPEngSessionSlotId& aSessionSlot );
+
+ /**
+ * Create Session folder in the storage
+ * This will ensure existence of the session slot folder till the
+ * moment calling application will not unregister from the
+ * session slot folder ( RemoveSessionFolderL)
+ *
+ * @since 3.0
+ * @param aSessionSlot session slot Class which caries
+ * unique information about the session
+ * @param aApplicationId application Id
+ */
+ void CreateSessionFolderL(
+ const CPEngSessionSlotId& aSessionSlot,
+ const TDesC& aApplicationId );
+
+ /**
+ * Remove Session folder from the storage,
+ * Session folder Session is deleted from the storage,
+ * only if the calling application was the last one registered
+ * @see CreateSessionFolderL()
+ *
+ * @since 3.0
+ * @param aSessionSlot session slot Class which caries
+ * unique information about the session
+ * @param aApplicationId application Id
+ */
+ void RemoveSessionFolderL(
+ const CPEngSessionSlotId& aSessionSlot,
+ const TDesC& aApplicationId );
+
+ /**
+ * Get Session slot state
+ * returns class where is described state of the session slot
+ * ownership is passed
+ *
+ * @since 3.0
+ * @param aSessionSlot session slot Class which caries
+ * unique information about the session
+ * @param aSessionSlotState state class is updated on the
+ * return with actual state
+ */
+ void SessionSlotStateL( const CPEngSessionSlotId& aSessionSlot,
+ CPEngSessionSlotState& aSessionSlotState );
+
+ /**
+ * Get list of existing Session slots
+ * Returns array of all existing session slots, no matter if
+ * session is opened or closed.
+ *
+ * @since 3.0
+ * @param aSessionSlot session slot Class which caries
+ * unique information about the session
+ */
+ void AllSessionSlotsStatesL(
+ RObjectArray<CPEngSessionSlotState>& aSessionSlots );
+
+
+ /**
+ * Register Global event observer
+ * Global event observer will be notified about all events
+ * of the PEC engine
+ *
+ * @since 3.0
+ * @param aGlobalObserver call back interface implemented by the
+ * observer
+ * Function leaves with KErrAlreadyExists
+ * , if same observer is already registered
+ */
+ void RegisterGlobalEventObserverL(
+ MPEngGlobalEventObserver& aGlobalObserver );
+
+ /**
+ * Unregister Global event observer
+ * Global observer is unregistered, if observer is not found
+ * among the registered observers, function is ignored
+ *
+ * @since 3.0
+ * @param aGlobalObserver call back interface implemented by the
+ * observer
+ */
+ void UnregisterGlobalObserver(
+ MPEngGlobalEventObserver& aGlobalObserver );
+
+private: // New private Functions
+
+ /**
+ * Start global event listener
+ * @since 3.0
+ */
+ void StartGlobalEventListenerL();
+
+
+private: // private constructors
+
+ /**
+ * C++ default constructor.
+ */
+ CPEngStorageManagerFactory();
+
+ /**
+ * Symbian 2nd phase constructor
+ */
+ void ConstructL();
+
+private: // Data
+
+ /// Listener of global events is activated
+ TBool iListening;
+
+ /// Is listening scout created on the server side
+ TInt iScoutCreated;
+
+ /// Access count of the reference counted object
+ TInt iAccessCount;
+
+ /// OWN: Storage manager main client
+ RPEngStorageClient iStoreManagerClient;
+
+ /// REF: Container with all Storage ID watchers
+ RPointerArray<CPEngStorageManagerWatcher> iStorageWatchers;
+
+ /// REF: Global Events Observers
+ RPointerArray<MPEngGlobalEventObserver> iObservers;
+
+ /// OWN:New Global Event receive Buffer
+ HBufC8* iGlobalEventBuff;
+
+ /// New Global Event
+ TPtr8 iGlobalEventDes;
+
+ /// Last All states buffer size
+ TInt iAllStatesBuffSize;
+
+ /// OWN: Flag is object is still alive
+ TBool* iAliveFlag;
+ };
+
+#endif // __CPENGSTORAGEMANAGERFACTORY_H__
+
+// End of File