--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presadap12/Parser2/Inc/CPEngSessionSlotState.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,398 @@
+/*
+* Copyright (c) 2005 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: Presence Engine Session Slot State container.
+*
+*/
+
+#ifndef __CPENGSESSIONSLOTSTATE_H__
+#define __CPENGSESSIONSLOTSTATE_H__
+
+// INCLUDES
+#include <E32Base.h>
+#include <BaDesca.h>
+#include "PEngPresenceEngineConsts2.h"
+
+
+
+
+// DATA TYPES
+
+/**
+ * Data selection enmumeration to select
+ * which parts of the CPEngSessionSlotState
+ * to stream.
+ *
+ * @since 3.0
+ */
+enum TPEngDataSelection
+ {
+ /**
+ * Session Slot Id part.
+ */
+ EIdentification = 0x00000001,
+
+ /**
+ * Registered application IDs part.
+ */
+ ERegistredIDs = 0x00000010,
+
+ /**
+ * State specific data.
+ * Active Application Ids and the state part.
+ */
+ EStateSpecific = 0x00000100,
+
+
+
+ //Mixed fields for real storage purposes.
+
+ /**
+ * Only Session Slot Id and Registered application IDs.
+ */
+ EPermanentData = EIdentification | ERegistredIDs,
+
+
+ /**
+ * Whole state container data without the Slot ID.
+ */
+ EPureState = ERegistredIDs | EStateSpecific,
+
+
+ /**
+ * Whole state container data.
+ */
+ EWholeState = EIdentification | ERegistredIDs | EStateSpecific,
+
+ };
+
+
+
+// FORWARD DECLARATIONS
+class RWriteStream;
+class RReadStream;
+class CPEngSessionSlotId;
+class CPEngSessionSlotEvent;
+
+
+
+
+// CLASS DECLARATION
+
+
+/**
+* Presence Engine Session Slot State container.
+* It is used infernally by the PE for transportation
+* of the slot state between the engine components
+* and also to maintain the slot state both
+* in permanent and cached memory.
+*
+* @since 3.0
+*/
+class CPEngSessionSlotState : public CBase
+ {
+ public: // Construction
+
+ /**
+ * Instantiates CPEngSessionSlotState object.
+ *
+ * @return New CPEngSessionSlotState instance.
+ */
+ IMPORT_C static CPEngSessionSlotState* NewL( );
+ IMPORT_C static CPEngSessionSlotState* NewLC( );
+
+
+ /**
+ * Destructor.
+ */
+ ~CPEngSessionSlotState();
+
+ protected:
+
+ /**
+ * C++ constructor.
+ */
+ CPEngSessionSlotState();
+
+
+
+ public: // Getters
+
+ /**
+ * Session Slot ID identification
+ *
+ * @since 3.0
+ * @return session slot ID identification class
+ */
+ IMPORT_C CPEngSessionSlotId& SessionSlotId( ) const;
+
+
+ /**
+ * Session slot Online state
+ *
+ * @since 3.0
+ * @return session slot state
+ */
+ IMPORT_C TPEngNWSessionSlotState SessionSlotState() const;
+
+
+ /**
+ * Gets list of Application IDs which are registered
+ * to this Session Slot.
+ *
+ * @since 3.0
+ * @return descriptor array with application IDs
+ */
+ IMPORT_C const MDesC16Array& RegisteredApplications() const;
+
+
+ /**
+ * Gets list of Application IDs which are active with
+ * this Session Slot.
+ *
+ * @since 3.0
+ * @return descriptor array with application IDs
+ */
+ IMPORT_C const MDesC16Array& ActiveApplications() const;
+
+
+ /**
+ * Gets certain application state from
+ * the session slot state.
+ *
+ * @since 3.0
+ * @param aAppId Application Id for which to get the state.
+ * @return State of the requested application Id.
+ */
+ IMPORT_C TPEngNWSessionSlotState AppState( const TDesC& aAppId ) const;
+
+
+ /**
+ * Checks if application is registered to this session slot.
+ * If application is not registered, leaves with KErrNotFound
+ *
+ * @since 3.0
+ * @param aAppId Application Id to check.
+ */
+ IMPORT_C void ApplicationRegisteredL( const TDesC& aAppId ) const;
+
+
+
+
+ public: // Setters
+
+ /**
+ * Set session slot ID.
+ *
+ * @since 3.0
+ * @param aSlotId New session slot Id.
+ * @param aOwnershipTransfered ETrue if aSlotId ownership is
+ * transfered to CPEngSessionSlotState instance
+ */
+ IMPORT_C void SetSessionSlotId( CPEngSessionSlotId& aSlotId,
+ TBool aOwnershipTransfered = EFalse );
+
+
+ /**
+ * Sets Session Slot State as closed.
+ *
+ * @since 3.0
+ */
+ IMPORT_C void SetSessionSlotStateClosed();
+
+
+ /**
+ * Update Session Slot State based on the event.
+ *
+ * @since 3.0
+ * @param aSessEvent Session Slot event.
+ * @return ETrue if state was updated because of event and
+ * state needs to be stored to permanent storage.
+ * Else EFalse.
+ */
+ IMPORT_C TBool UpdateStateL( const CPEngSessionSlotEvent& aSessEvent );
+
+
+ /**
+ * Updates and commits the Session Slot State
+ * based on the event.
+ *
+ * @since 3.0
+ * @param aSessEvent Session Slot event.
+ * @return ETrue if state was updated because of event and
+ * state needs to be stored to permanent storage.
+ * Else EFalse.
+ */
+ IMPORT_C TBool UpdateAndCommitStateL( const CPEngSessionSlotEvent& aSessEvent );
+
+
+ /**
+ * Rollback last change
+ *
+ * @since 3.0
+ */
+ IMPORT_C void RollBackLastUpdate();
+
+
+ /**
+ * Commit last change
+ *
+ * @since 3.0
+ */
+ IMPORT_C void CommitLastUpdate();
+
+
+
+ public: // Export import of the state
+
+ /**
+ * Internalize Session Slot state from stream.
+ *
+ * @since 3.0
+ * @param aStream stream to internalize from
+ * @param aSelection selection flag describing what to internalize
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream,
+ TPEngDataSelection aSelection );
+
+
+ /**
+ * Externalize Session Slot state to stream
+ *
+ * @since 3.0
+ * @param aStream stream to externalize
+ * @param aSelection selection flag describing what to externalize
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream,
+ TPEngDataSelection aSelection ) const;
+
+
+ /**
+ * Packs Session Slot State to the buffer.
+ *
+ * @since 3.0
+ * @param aSelection selection flag describing what to pack
+ * @return Buffer with streamed session slot state data.
+ * Buffer ownership is returned to caller.
+ */
+ IMPORT_C HBufC8* PackDataLC( TPEngDataSelection aSelection ) const;
+ IMPORT_C void PackDataL( TPEngDataSelection aSelection, RBuf8& aBuf ) const;
+
+
+ /**
+ * Unpacks Session Slot State from the passed descriptor
+ *
+ * @since 3.0
+ * @param aDes Descriptor to unpack from.
+ * @param aSelection selection flag describing what to unpack
+ */
+ IMPORT_C void UnpackDataL( const TDesC8& aDes,
+ TPEngDataSelection aSelection );
+
+ /**
+ * Size of needed stream to externalizate the container.
+ *
+ * @since 3.0
+ * @param aSelection selection flag describing what
+ * to calculate to the size.
+ * @return size of the buffer in the bytes
+ */
+ IMPORT_C TInt Size( TPEngDataSelection aSelection ) const;
+
+
+
+ private: //Helpers
+
+ /**
+ * Add registered Application Id
+ *
+ * @since 3.0
+ * @param aAppId application Id to be added
+ */
+ void AddRegisteredAppIdL( const TDesC& aAppId );
+
+
+ /**
+ * Remove registered Application Id
+ *
+ * @since 3.0
+ * @param aAppId application Id to be removed
+ */
+ void RemoveRegisteredAppIdL( const TDesC& aAppId );
+
+
+ /**
+ * Add Active Application Id
+ *
+ * @since 3.0
+ * @param aAppId application Id to be added
+ */
+ void AddActiveAppIdL( const TDesC& aAppId );
+
+
+ /**
+ * Remove Active Application Id
+ *
+ * @since 3.0
+ * @param aAppId application Id to be removed
+ */
+ void RemoveActiveAppId( const TDesC& aAppId );
+
+ /**
+ * Checks is the Application Id registered or not
+ *
+ * @since 3.0
+ * @param aAppId application Id to be check.
+ * @return ETrue if app id is registered. Else EFalse.
+ */
+ TBool ApplicationRegistered( const TDesC& aAppId ) const;
+
+
+
+ private: // data
+
+ //OWN/REF: Session Slot ID
+ CPEngSessionSlotId* iSessionId;
+
+ //OWN: Is previous session Slot ID owned or not
+ TBool iSessionIdOwned;
+
+ //OWN: Session Slot State
+ TPEngNWSessionSlotState iState;
+
+ //OWN: Active Application's Application IDs
+ CDesCArrayFlat iActiveApps;
+
+ //OWN: Registered Application's Application IDs
+ CDesCArrayFlat iRegisteredApps;
+
+
+
+ // Roll back support for app id changes
+
+ //OWN: Index of added active Id
+ TInt iActiveAdded;
+
+ //OWN: Index of removed active Id
+ TInt iActiveRemoved;
+
+ //OWN: Index of added Registered Id
+ TInt iRegAdded;
+
+ //OWN: Index of removed Registered Id
+ TInt iRegRemoved;
+
+ };
+
+#endif // __CPENGNWSESSIONSLOTEVENT_H__
+// End of File
\ No newline at end of file