--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/CoreUtilsLib2/Src/CPEngSessionSlotEvent.cpp Wed Sep 01 12:31:13 2010 +0100
@@ -0,0 +1,453 @@
+/*
+* 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: Session Slot Event container.
+*
+*/
+
+// INCLUDE FILES
+#include "CPEngSessionSlotEvent.h"
+#include "PEngCoreUtilsTools.h"
+#include "CPEngSessionSlotId.h"
+
+
+
+// CONSTANTS
+
+//LOCAL PANIC
+namespace
+ {
+ //SessionSlotEvent panic
+ _LIT( KPEngSessionSlotEventPanic, "SessSlotEvent" );
+
+ //SessionSlotEvent panic reasons
+ enum TPEngSessionSlotEventPanicReasons
+ {
+ EPEngNoSessionSlotId = 1
+ };
+
+ void PanicSessionSlotEvent( TPEngSessionSlotEventPanicReasons aPanicReason )
+ {
+ User::Panic( KPEngSessionSlotEventPanic, aPanicReason );
+ }
+ }
+
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::CPEngSessionSlotEvent
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPEngSessionSlotEvent::CPEngSessionSlotEvent()
+ : iIdentificationOwned( EFalse )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::NewL()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPEngSessionSlotEvent* CPEngSessionSlotEvent::NewL()
+ {
+ CPEngSessionSlotEvent* self = new ( ELeave ) CPEngSessionSlotEvent();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::NewLC()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CPEngSessionSlotEvent* CPEngSessionSlotEvent::NewLC()
+ {
+ CPEngSessionSlotEvent* self = new ( ELeave ) CPEngSessionSlotEvent();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+
+// Destructor
+CPEngSessionSlotEvent::~CPEngSessionSlotEvent()
+ {
+ if ( iIdentificationOwned )
+ {
+ delete iSessionId;
+ }
+ delete iEventDesc;
+ delete iApplicationId;
+
+
+#if _BullseyeCoverage
+ cov_write();
+#endif
+ }
+
+
+
+// =============================================================================
+// ======================= Session Slot Event ==================================
+// =============================================================================
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SessionSlotIndentification()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CPEngSessionSlotId& CPEngSessionSlotEvent::SessionSlotIndentification( ) const
+ {
+ __ASSERT_ALWAYS( iSessionId, PanicSessionSlotEvent( EPEngNoSessionSlotId ) );
+ return *iSessionId;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::ApplicationId()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CPEngSessionSlotEvent::ApplicationId( void ) const
+ {
+ return DoGetDescriptor( iApplicationId );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::Event()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TPEngNWSessionSlotEvent CPEngSessionSlotEvent::Event( void ) const
+ {
+ return iEvent;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::AppSessSlotState()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TPEngNWSessionSlotState CPEngSessionSlotEvent::AppSessSltState( void ) const
+ {
+ return iAppSessState;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::GlobSessSltState()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TPEngNWSessionSlotState CPEngSessionSlotEvent::GlobSessSltState( void ) const
+ {
+ return iGlobSessState;
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::EventInt()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CPEngSessionSlotEvent::EventInt( void ) const
+ {
+ return iEventInt;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::EventDesc()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CPEngSessionSlotEvent::EventDesc( void ) const
+ {
+ return DoGetDescriptor( iEventDesc );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetSessionStlotId()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetSessionSlotId(
+ CPEngSessionSlotId* aSlotId,
+ TBool aOwnershipTransfered /* EFalse */ )
+ {
+ if ( iSessionId && iIdentificationOwned )
+ {
+ delete iSessionId;
+ }
+
+ iSessionId = aSlotId;
+ iIdentificationOwned = aOwnershipTransfered;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetAppIdL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetAppIdL( const TDesC& aAppId )
+ {
+ DoSetDescriptorL( iApplicationId, aAppId );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetSessSltEvent()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetSessSltEvent(
+ TPEngNWSessionSlotEvent aEvent )
+ {
+ iEvent = aEvent;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetAppSessSltState()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetAppSessSltState(
+ TPEngNWSessionSlotState aState )
+ {
+ iAppSessState = aState;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetGlobSessSltState()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetGlobSessSltState(
+ TPEngNWSessionSlotState aState )
+ {
+ iGlobSessState = aState;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetEventInt()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetEventInt(
+ TInt aEventInt )
+ {
+ iEventInt = aEventInt;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::SetEventDesL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::SetEventDesL(
+ const TDesC& aEventDes )
+ {
+ DoSetDescriptorL( iEventDesc, aEventDes );
+ }
+
+
+
+
+// =============================================================================
+// =========== Externalize Internalize functions ===============================
+// =============================================================================
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::InternalizeL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::InternalizeL( RReadStream& aStream,
+ TBool aAllData )
+ {
+ if ( aAllData )
+ {
+ CPEngSessionSlotId* newId = CPEngSessionSlotId::NewLC();
+ newId->InternalizeL( aStream );
+ SetSessionSlotId( newId, ETrue );
+ CleanupStack::Pop( newId );
+ }
+
+ delete iApplicationId;
+ iApplicationId = NULL;
+ iApplicationId = InternalizeBufferL( aStream );
+
+
+ iEvent = static_cast<TPEngNWSessionSlotEvent>( aStream.ReadInt32L() );
+ iAppSessState = static_cast<TPEngNWSessionSlotState>( aStream.ReadInt32L() );
+ iGlobSessState = static_cast<TPEngNWSessionSlotState>( aStream.ReadInt32L() );
+
+
+ iEventInt = aStream.ReadInt32L();
+
+ delete iEventDesc;
+ iEventDesc = NULL;
+ iEventDesc = InternalizeBufferL( aStream );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::UnpackEventL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::UnpackEventL( const TDesC8& aDes )
+ {
+ RDesReadStream rs;
+ rs.Open( aDes ); // CSI: 65 #
+ CleanupClosePushL( rs );
+ InternalizeL( rs, ETrue );
+ CleanupStack::PopAndDestroy(); // rs
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::UnpackEventPartL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::UnpackEventPartL( const TDesC8& aDes )
+ {
+ RDesReadStream rs;
+ rs.Open( aDes ); // CSI: 65 #
+ CleanupClosePushL( rs );
+
+ InternalizeL( rs, EFalse );
+
+ CleanupStack::PopAndDestroy(); // rs
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::ExternalizeL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::ExternalizeL( RWriteStream& aStream,
+ TBool aAllData ) const
+ {
+ if ( aAllData )
+ {
+ __ASSERT_ALWAYS( iSessionId, PanicSessionSlotEvent( EPEngNoSessionSlotId ) );
+ iSessionId->ExternalizeL( aStream );
+ }
+
+ ExternalizeBufferL( iApplicationId, aStream );
+
+ aStream.WriteInt32L( iEvent );
+ aStream.WriteInt32L( iAppSessState );
+ aStream.WriteInt32L( iGlobSessState );
+
+ aStream.WriteInt32L( iEventInt );
+ ExternalizeBufferL( iEventDesc, aStream );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::Size()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CPEngSessionSlotEvent::Size( TBool aAllData ) const
+ {
+ TInt size = 16; // iEvent: 4 bytes
+ // iAppSessState: 4 bytes
+ // iGlobSessState: 4 bytes
+ // iEventInt: 4 bytes
+
+ if ( aAllData )
+ {
+ __ASSERT_ALWAYS( iSessionId, PanicSessionSlotEvent( EPEngNoSessionSlotId ) );
+ size += iSessionId->Size();
+ }
+
+ size += BufferExternalizeSizeInBytes( iApplicationId );
+ size += BufferExternalizeSizeInBytes( iEventDesc );
+
+ return size;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::PackEventLC()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CPEngSessionSlotEvent::PackEventLC()
+ {
+ HBufC8* packBuffer = HBufC8::NewLC( Size( ETrue ) );
+ TPtr8 pack( packBuffer->Des() );
+
+ RDesWriteStream ws;
+ ws.Open( pack ); // CSI: 65 #
+ CleanupClosePushL( ws );
+
+ ExternalizeL( ws, ETrue );
+
+ ws.CommitL();
+ CleanupStack::PopAndDestroy(); //ws
+
+ packBuffer = packBuffer->ReAllocL( packBuffer->Length() );
+ CleanupStack::Pop();
+ CleanupStack::PushL( packBuffer ); //Due realloc
+ return packBuffer;
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::PackEventL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CPEngSessionSlotEvent::PackEventL( RBuf8& aBuf )
+ {
+ TInt size( Size( ETrue ) );
+ if ( aBuf.MaxSize() < size )
+ {
+ aBuf.ReAllocL( size );
+ }
+ aBuf.Zero();
+
+ RDesWriteStream ws;
+ ws.Open( aBuf ); // CSI: 65 #
+ CleanupClosePushL( ws );
+
+ ExternalizeL( ws, ETrue );
+
+ ws.CommitL();
+ CleanupStack::PopAndDestroy(); //ws
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngSessionSlotEvent::PackEventPartL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CPEngSessionSlotEvent::PackEventPartLC()
+ {
+ HBufC8* packBuffer = HBufC8::NewLC( Size( EFalse ) );
+ TPtr8 pack( packBuffer->Des() );
+
+ RDesWriteStream ws;
+ ws.Open( pack ); // CSI: 65 #
+ CleanupClosePushL( ws );
+
+ ExternalizeL( ws, EFalse );
+
+ ws.CommitL();
+ CleanupStack::PopAndDestroy(); //ws
+
+ packBuffer = packBuffer->ReAllocL( packBuffer->Length() );
+ CleanupStack::Pop();
+ CleanupStack::PushL( packBuffer ); //Due realloc
+ return packBuffer;
+ }
+
+
+// End of File
+
+