ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfilelogichelper.cpp
changeset 0 e6b17d312c8b
--- /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