--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfilelogichelper.cpp Thu Dec 17 08:54:49 2009 +0200
@@ -0,0 +1,317 @@
+/*
+* Copyright (c) 2006 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: Test support file tool
+ *
+*/
+
+
+#include <ximpprotocolconnectionhost.h>
+#include <protocolpresenceauthorizationdatahost.h>
+#include <protocolpresentitygroupsdatahost.h>
+#include <protocolpresencepublishingdatahost.h>
+#include <protocolpresencewatchingdatahost.h>
+#include <ximpdatasubscriptionstate.h>
+#include <protocolpresencedatahost.h>
+#include "prfwtestfilelogichelper.h"
+#include "prfwtestfilesrvmsg.h"
+#include "presentitygroupinfoimp.h"
+#include "presentitygroupmemberinfoimp.h"
+#include "presencewatcherinfoimp.h"
+#include "presencegrantrequestinfoimp.h"
+#include "presenceblockinfoimp.h"
+#include "ximpidentityimp.h"
+#include "ximpobjecthelpers.h"
+#include "prfwtestmessenger.h"
+#include "ximprestrictedobjectcollectionimp.h"
+#include "ximpobjectcollectionimp.h"
+#include "presenceinfoimp.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CXIMPTestFileLogicHelper::CXIMPTestFileLogicHelper( MXIMPProtocolConnectionHost& aHost, CXIMPTestMessenger& aMessenger )
+: iHost( aHost ), iMessenger( aMessenger )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CXIMPTestFileLogicHelper::ConstructL()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CXIMPTestFileLogicHelper* CXIMPTestFileLogicHelper::NewL( MXIMPProtocolConnectionHost& aHost, CXIMPTestMessenger& aMessenger )
+ {
+ CXIMPTestFileLogicHelper* self = new( ELeave ) CXIMPTestFileLogicHelper( aHost, aMessenger );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+CXIMPTestFileLogicHelper::~CXIMPTestFileLogicHelper()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// ?description_if_needed
+// ---------------------------------------------------------------------------
+//
+void CXIMPTestFileLogicHelper::HandleL( TInt aCommandType, TDesC8& aCommand )
+ {
+ switch( aCommandType )
+ {
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestList:
+ {
+ RXIMPObjOwningPtrArray< CPresenceGrantRequestInfoImp > array;
+ CleanupClosePushL( array );
+ TXIMPObjectPacker<CPresenceGrantRequestInfoImp>::UnPackArrayL( array, aCommand );
+ CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
+ for( TInt a = 0; a < array.Count(); ++a )
+ {
+ objCollection->AddObjectL( array[ a ] );
+ array[ a ] = NULL;
+ }
+
+ iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestListL( objCollection );
+ CleanupStack::Pop( objCollection );
+ CleanupStack::PopAndDestroy(); //array
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestReceived:
+ {
+ CPresenceGrantRequestInfoImp* infoFromServer =
+ CPresenceGrantRequestInfoImp::NewLC();
+ TXIMPObjectPacker<CPresenceGrantRequestInfoImp>::UnPackL(
+ *infoFromServer, aCommand );
+
+ iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestReceivedL( infoFromServer );
+ CleanupStack::Pop( infoFromServer );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestObsoleted:
+ {
+ CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker<CXIMPIdentityImp>::UnPackL( *idFromServer,
+ aCommand );
+
+ iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestObsoletedL( idFromServer );
+ CleanupStack::Pop( idFromServer );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupList:
+ {
+ RXIMPObjOwningPtrArray< CPresentityGroupInfoImp > array;
+ CleanupClosePushL( array );
+ TXIMPObjectPacker<CPresentityGroupInfoImp>::UnPackArrayL( array, aCommand );
+ CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
+ for( TInt a = 0; a < array.Count(); ++a )
+ {
+ objCollection->AddObjectL( array[ a ] );
+ array[ a ] = NULL;
+ }
+ iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupListL( objCollection );
+ CleanupStack::Pop( objCollection );
+ CleanupStack::PopAndDestroy(); //array
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupCreate:
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupUpdate:
+ {
+ CPresentityGroupInfoImp* infoFromServer =
+ CPresentityGroupInfoImp::NewLC();
+ TXIMPObjectPacker<CPresentityGroupInfoImp>::UnPackL(
+ *infoFromServer, aCommand );
+
+ if( aCommandType == CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupCreate )
+ {
+ iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupCreatedL( infoFromServer );
+ }
+ else
+ {
+ iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupDisplayNameUpdatedL( infoFromServer );
+ }
+ CleanupStack::Pop( infoFromServer );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupDelete:
+ {
+ CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker<CXIMPIdentityImp>::UnPackL( *idFromServer,
+ aCommand );
+ iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupDeletedL( idFromServer );
+ CleanupStack::Pop( idFromServer );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupMemberList:
+ {
+ RPointerArray< HBufC8 > bufferArray;
+ CleanupClosePushL( bufferArray );
+ TXIMPHBuf8Packer::UnPackArrayL( bufferArray, aCommand );
+ HBufC8* groupIdBuf = bufferArray[ 0 ];
+ HBufC8* array = bufferArray[ 1 ];
+ CleanupStack::PopAndDestroy(); // BufferArray
+ CleanupStack::PushL( groupIdBuf );
+ CleanupStack::PushL( array );
+
+ CXIMPIdentityImp* groupId = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *groupId, *groupIdBuf );
+
+ RXIMPObjOwningPtrArray< CPresentityGroupMemberInfoImp > memberArray;
+ CleanupClosePushL( memberArray );
+ TXIMPObjectPacker<CPresentityGroupMemberInfoImp>::UnPackArrayL( memberArray, *array );
+ CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
+ for( TInt a = 0; a < memberArray.Count(); ++a )
+ {
+ objCollection->AddObjectL( memberArray[ a ] );
+ memberArray[ a ] = NULL;
+ }
+ iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupContentL( groupId, objCollection );
+ CleanupStack::Pop( objCollection );
+ CleanupStack::PopAndDestroy(); //memberArray
+ CleanupStack::Pop( groupId );
+ CleanupStack::PopAndDestroy( 2, groupIdBuf );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestCheckIfGroupMemberExists:
+ {
+ CXIMPIdentityImp* groupId = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *groupId, aCommand );
+ // Write to pubsub
+ const MXIMPDataSubscriptionState& state =
+ iHost.ProtocolPresenceDataHost().GroupsDataHost().PresentityGroupContentDataSubscriptionState( *groupId );
+ if( state.DataState() == MXIMPDataSubscriptionState::EDataAvailable )
+ {
+ iMessenger.SetValueFor( EXIMPPlgTestExistsGroupContentInCache, 1 );
+ }
+ else
+ {
+ iMessenger.SetValueFor( EXIMPPlgTestExistsGroupContentInCache, KErrNotFound );
+ }
+ CleanupStack::PopAndDestroy( groupId );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceWatcherList:
+ {
+ RXIMPObjOwningPtrArray< CPresenceWatcherInfoImp > array;
+ CleanupClosePushL( array );
+ TXIMPObjectPacker< CPresenceWatcherInfoImp >::UnPackArrayL( array, aCommand );
+ CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
+ for( TInt a = 0; a < array.Count(); ++a )
+ {
+ objCollection->AddObjectL( array[ a ] );
+ array[ a ] = NULL;
+ }
+
+ iHost.ProtocolPresenceDataHost().PublishingDataHost().HandlePresenceWatcherListL( objCollection );
+ CleanupStack::Pop( objCollection );
+ CleanupStack::PopAndDestroy(); //, array
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityPresence:
+ {
+ RPointerArray< HBufC8 > bufferArray;
+ CleanupClosePushL( bufferArray );
+ TXIMPHBuf8Packer::UnPackArrayL( bufferArray, aCommand );
+ HBufC8* presenceIdBuf = bufferArray[ 0 ];
+ HBufC8* presenceInfoBuf = bufferArray[ 1 ];
+ CleanupStack::PopAndDestroy(); // BufferArray
+ CleanupStack::PushL( presenceIdBuf );
+ CleanupStack::PushL( presenceInfoBuf );
+
+ CXIMPIdentityImp* presenceId = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *presenceId, *presenceIdBuf );
+
+ CPresenceInfoImp* presenceInfo = CPresenceInfoImp::NewLC();
+ TXIMPObjectPacker< CPresenceInfoImp >::UnPackL( *presenceInfo, *presenceInfoBuf );
+
+ iHost.ProtocolPresenceDataHost().WatchingDataHost().HandleSubscribedPresentityPresenceL( presenceId, presenceInfo );
+
+ CleanupStack::Pop( 2, presenceId );
+ CleanupStack::PopAndDestroy( 2, presenceIdBuf );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlockList:
+ {
+ RXIMPObjOwningPtrArray< CPresenceBlockInfoImp > array;
+ CleanupClosePushL( array );
+ TXIMPObjectPacker< CPresenceBlockInfoImp >::UnPackArrayL( array, aCommand );
+ CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
+ for( TInt a = 0; a < array.Count(); ++a )
+ {
+ objCollection->AddObjectL( array[ a ] );
+ array[ a ] = NULL;
+ }
+
+ iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockListL( objCollection );
+ CleanupStack::Pop( objCollection );
+ CleanupStack::PopAndDestroy(); // array
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlocked:
+ {
+ CPresenceBlockInfoImp* infoFromServer =
+ CPresenceBlockInfoImp::NewLC();
+ TXIMPObjectPacker<CPresenceBlockInfoImp>::UnPackL(
+ *infoFromServer, aCommand );
+ iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockedL( infoFromServer );
+ CleanupStack::Pop( infoFromServer );
+ break;
+ }
+ case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlockCanceled:
+ {
+ CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker<CXIMPIdentityImp>::UnPackL( *idFromServer,
+ aCommand );
+
+ iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockCanceledL( idFromServer );
+
+ CleanupStack::Pop( idFromServer );
+ break;
+ }
+
+ case CXIMPTestFileSrvMsg::ETestSrvMsgReqParamIdentity:
+ {
+ CXIMPIdentityImp* groupId = CXIMPIdentityImp::NewLC();
+ TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *groupId, aCommand );
+ CXIMPRestrictedObjectCollectionImp* paramCollection = CXIMPRestrictedObjectCollectionImp::NewLC();
+ paramCollection->AddOrReplaceTypeL( groupId );
+ iMessenger.SetReqCompleteParams( paramCollection );
+ CleanupStack::Pop( 2, groupId );
+ break;
+ }
+ default:
+ {
+ User::Panic( _L( "Not valid commandtype" ), 59 );
+ break;
+ }
+ }
+ }
+
+// End of file