diff -r 000000000000 -r 61fad867f68e ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfilelogichelper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfilelogichelper.cpp Wed Nov 03 09:32:20 2010 +0530 @@ -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 +#include +#include +#include +#include +#include +#include +#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::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::UnPackL( + *infoFromServer, aCommand ); + + iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestReceivedL( infoFromServer ); + CleanupStack::Pop( infoFromServer ); + break; + } + case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestObsoleted: + { + CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC(); + TXIMPObjectPacker::UnPackL( *idFromServer, + aCommand ); + + iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestObsoletedL( idFromServer ); + CleanupStack::Pop( idFromServer ); + break; + } + case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupList: + { + RXIMPObjOwningPtrArray< CPresentityGroupInfoImp > array; + CleanupClosePushL( array ); + TXIMPObjectPacker::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::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::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::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::UnPackL( + *infoFromServer, aCommand ); + iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockedL( infoFromServer ); + CleanupStack::Pop( infoFromServer ); + break; + } + case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlockCanceled: + { + CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC(); + TXIMPObjectPacker::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