ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfilelogichelper.cpp
changeset 51 61fad867f68e
equal deleted inserted replaced
-1:000000000000 51:61fad867f68e
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Test support file tool
       
    15  *
       
    16 */
       
    17 
       
    18 
       
    19 #include <ximpprotocolconnectionhost.h>
       
    20 #include <protocolpresenceauthorizationdatahost.h>
       
    21 #include <protocolpresentitygroupsdatahost.h>
       
    22 #include <protocolpresencepublishingdatahost.h>
       
    23 #include <protocolpresencewatchingdatahost.h>
       
    24 #include <ximpdatasubscriptionstate.h>
       
    25 #include <protocolpresencedatahost.h>
       
    26 #include "prfwtestfilelogichelper.h"
       
    27 #include "prfwtestfilesrvmsg.h"
       
    28 #include "presentitygroupinfoimp.h"
       
    29 #include "presentitygroupmemberinfoimp.h"
       
    30 #include "presencewatcherinfoimp.h"
       
    31 #include "presencegrantrequestinfoimp.h"
       
    32 #include "presenceblockinfoimp.h"
       
    33 #include "ximpidentityimp.h"
       
    34 #include "ximpobjecthelpers.h"
       
    35 #include "prfwtestmessenger.h"
       
    36 #include "ximprestrictedobjectcollectionimp.h"
       
    37 #include "ximpobjectcollectionimp.h"
       
    38 #include "presenceinfoimp.h"
       
    39 
       
    40 // ======== LOCAL FUNCTIONS ========
       
    41 
       
    42 // ======== MEMBER FUNCTIONS ========
       
    43 
       
    44 // ---------------------------------------------------------------------------
       
    45 // ?description_if_needed
       
    46 // ---------------------------------------------------------------------------
       
    47 //
       
    48 CXIMPTestFileLogicHelper::CXIMPTestFileLogicHelper( MXIMPProtocolConnectionHost& aHost, CXIMPTestMessenger& aMessenger )
       
    49 : iHost( aHost ), iMessenger( aMessenger )
       
    50     {
       
    51     }
       
    52 
       
    53 // ---------------------------------------------------------------------------
       
    54 // ?description_if_needed
       
    55 // ---------------------------------------------------------------------------
       
    56 //
       
    57 void CXIMPTestFileLogicHelper::ConstructL()
       
    58     {
       
    59     }
       
    60 
       
    61 // ---------------------------------------------------------------------------
       
    62 // ?description_if_needed
       
    63 // ---------------------------------------------------------------------------
       
    64 //
       
    65 EXPORT_C CXIMPTestFileLogicHelper* CXIMPTestFileLogicHelper::NewL( MXIMPProtocolConnectionHost& aHost, CXIMPTestMessenger& aMessenger  )
       
    66     {
       
    67     CXIMPTestFileLogicHelper* self = new( ELeave ) CXIMPTestFileLogicHelper( aHost, aMessenger );
       
    68     CleanupStack::PushL( self );
       
    69     self->ConstructL();
       
    70     CleanupStack::Pop( self );
       
    71     return self;
       
    72     }
       
    73 
       
    74 // ---------------------------------------------------------------------------
       
    75 // ?description_if_needed
       
    76 // ---------------------------------------------------------------------------
       
    77 //
       
    78 CXIMPTestFileLogicHelper::~CXIMPTestFileLogicHelper()
       
    79     {
       
    80     }
       
    81 
       
    82 // ---------------------------------------------------------------------------
       
    83 // ?description_if_needed
       
    84 // ---------------------------------------------------------------------------
       
    85 //
       
    86 void CXIMPTestFileLogicHelper::HandleL( TInt aCommandType, TDesC8& aCommand )
       
    87     {
       
    88     switch( aCommandType )
       
    89         {
       
    90         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestList:
       
    91             {
       
    92             RXIMPObjOwningPtrArray< CPresenceGrantRequestInfoImp > array;
       
    93             CleanupClosePushL( array );
       
    94             TXIMPObjectPacker<CPresenceGrantRequestInfoImp>::UnPackArrayL( array, aCommand );
       
    95             CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
       
    96             for( TInt a = 0; a < array.Count(); ++a )
       
    97                 {
       
    98                 objCollection->AddObjectL( array[ a ] );
       
    99                 array[ a ] = NULL;
       
   100                 }
       
   101 
       
   102             iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestListL( objCollection );
       
   103             CleanupStack::Pop( objCollection );
       
   104             CleanupStack::PopAndDestroy(); //array
       
   105             break;
       
   106             }
       
   107         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestReceived:
       
   108             {
       
   109             CPresenceGrantRequestInfoImp* infoFromServer =
       
   110                                 CPresenceGrantRequestInfoImp::NewLC();
       
   111             TXIMPObjectPacker<CPresenceGrantRequestInfoImp>::UnPackL(
       
   112                                     *infoFromServer, aCommand );
       
   113 
       
   114             iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestReceivedL( infoFromServer );
       
   115             CleanupStack::Pop( infoFromServer );
       
   116             break;
       
   117             }
       
   118         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceGrantRequestObsoleted:
       
   119             {
       
   120             CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC();
       
   121             TXIMPObjectPacker<CXIMPIdentityImp>::UnPackL( *idFromServer,
       
   122                                                             aCommand );
       
   123 
       
   124             iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceGrantRequestObsoletedL( idFromServer );
       
   125             CleanupStack::Pop( idFromServer );
       
   126             break;
       
   127             }
       
   128         case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupList:
       
   129             {
       
   130             RXIMPObjOwningPtrArray< CPresentityGroupInfoImp > array;
       
   131             CleanupClosePushL( array );
       
   132             TXIMPObjectPacker<CPresentityGroupInfoImp>::UnPackArrayL( array, aCommand );
       
   133             CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
       
   134             for( TInt a = 0; a < array.Count(); ++a )
       
   135                 {
       
   136                 objCollection->AddObjectL( array[ a ] );
       
   137                 array[ a ] = NULL;
       
   138                 }
       
   139             iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupListL( objCollection );
       
   140             CleanupStack::Pop( objCollection );
       
   141             CleanupStack::PopAndDestroy(); //array
       
   142             break;            
       
   143             }
       
   144         case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupCreate:
       
   145         case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupUpdate:
       
   146             {
       
   147             CPresentityGroupInfoImp* infoFromServer =
       
   148                                 CPresentityGroupInfoImp::NewLC();
       
   149             TXIMPObjectPacker<CPresentityGroupInfoImp>::UnPackL(
       
   150                                     *infoFromServer, aCommand );
       
   151 
       
   152             if( aCommandType == CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupCreate )
       
   153                 {
       
   154                 iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupCreatedL( infoFromServer );
       
   155                 }
       
   156             else
       
   157                 {
       
   158                 iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupDisplayNameUpdatedL( infoFromServer );
       
   159                 }
       
   160             CleanupStack::Pop( infoFromServer );
       
   161             break;
       
   162             }
       
   163         case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupDelete:
       
   164             {
       
   165             CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC();
       
   166             TXIMPObjectPacker<CXIMPIdentityImp>::UnPackL( *idFromServer,
       
   167                                                             aCommand );
       
   168             iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupDeletedL( idFromServer );
       
   169             CleanupStack::Pop( idFromServer );
       
   170             break;
       
   171             }
       
   172         case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityGroupMemberList:
       
   173             {
       
   174             RPointerArray< HBufC8 > bufferArray;
       
   175             CleanupClosePushL( bufferArray );
       
   176             TXIMPHBuf8Packer::UnPackArrayL( bufferArray, aCommand );
       
   177             HBufC8* groupIdBuf = bufferArray[ 0 ];
       
   178             HBufC8* array = bufferArray[ 1 ];
       
   179             CleanupStack::PopAndDestroy(); //  BufferArray
       
   180             CleanupStack::PushL( groupIdBuf );
       
   181             CleanupStack::PushL( array );
       
   182 
       
   183             CXIMPIdentityImp* groupId = CXIMPIdentityImp::NewLC();
       
   184             TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *groupId, *groupIdBuf );
       
   185 
       
   186             RXIMPObjOwningPtrArray< CPresentityGroupMemberInfoImp > memberArray;
       
   187             CleanupClosePushL( memberArray );
       
   188             TXIMPObjectPacker<CPresentityGroupMemberInfoImp>::UnPackArrayL( memberArray, *array );
       
   189             CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
       
   190             for( TInt a = 0; a < memberArray.Count(); ++a )
       
   191                 {
       
   192                 objCollection->AddObjectL( memberArray[ a ] );
       
   193                 memberArray[ a ] = NULL;
       
   194                 }
       
   195             iHost.ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupContentL( groupId, objCollection );
       
   196             CleanupStack::Pop( objCollection );
       
   197             CleanupStack::PopAndDestroy(); //memberArray
       
   198             CleanupStack::Pop( groupId );
       
   199             CleanupStack::PopAndDestroy( 2, groupIdBuf );
       
   200             break;
       
   201             }
       
   202         case CXIMPTestFileSrvMsg::ETestCheckIfGroupMemberExists:
       
   203             {
       
   204             CXIMPIdentityImp* groupId = CXIMPIdentityImp::NewLC();
       
   205             TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *groupId, aCommand );
       
   206             // Write to pubsub
       
   207             const MXIMPDataSubscriptionState& state = 
       
   208                 iHost.ProtocolPresenceDataHost().GroupsDataHost().PresentityGroupContentDataSubscriptionState( *groupId );
       
   209             if( state.DataState() == MXIMPDataSubscriptionState::EDataAvailable )
       
   210                 {
       
   211                 iMessenger.SetValueFor( EXIMPPlgTestExistsGroupContentInCache, 1 );
       
   212                 }
       
   213             else
       
   214                 {
       
   215                 iMessenger.SetValueFor( EXIMPPlgTestExistsGroupContentInCache, KErrNotFound );
       
   216                 }
       
   217             CleanupStack::PopAndDestroy( groupId );
       
   218             break;
       
   219             }
       
   220         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceWatcherList:
       
   221             {
       
   222             RXIMPObjOwningPtrArray< CPresenceWatcherInfoImp > array;
       
   223             CleanupClosePushL( array );
       
   224             TXIMPObjectPacker< CPresenceWatcherInfoImp >::UnPackArrayL( array, aCommand );
       
   225             CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
       
   226             for( TInt a = 0; a < array.Count(); ++a )
       
   227                 {
       
   228                 objCollection->AddObjectL( array[ a ] );
       
   229                 array[ a ] = NULL;
       
   230                 }
       
   231 
       
   232             iHost.ProtocolPresenceDataHost().PublishingDataHost().HandlePresenceWatcherListL( objCollection );
       
   233             CleanupStack::Pop( objCollection );
       
   234             CleanupStack::PopAndDestroy(); //, array
       
   235             break;
       
   236             }
       
   237         case CXIMPTestFileSrvMsg::ETestSrvMsgPresentityPresence:
       
   238             {
       
   239             RPointerArray< HBufC8 > bufferArray;
       
   240             CleanupClosePushL( bufferArray );
       
   241             TXIMPHBuf8Packer::UnPackArrayL( bufferArray, aCommand );
       
   242             HBufC8* presenceIdBuf = bufferArray[ 0 ];
       
   243             HBufC8* presenceInfoBuf = bufferArray[ 1 ];
       
   244             CleanupStack::PopAndDestroy(); //  BufferArray
       
   245             CleanupStack::PushL( presenceIdBuf );
       
   246             CleanupStack::PushL( presenceInfoBuf );
       
   247 
       
   248             CXIMPIdentityImp* presenceId = CXIMPIdentityImp::NewLC();
       
   249             TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *presenceId, *presenceIdBuf );
       
   250 
       
   251             CPresenceInfoImp* presenceInfo = CPresenceInfoImp::NewLC();
       
   252             TXIMPObjectPacker< CPresenceInfoImp >::UnPackL( *presenceInfo, *presenceInfoBuf );
       
   253 
       
   254             iHost.ProtocolPresenceDataHost().WatchingDataHost().HandleSubscribedPresentityPresenceL( presenceId, presenceInfo );
       
   255             
       
   256             CleanupStack::Pop( 2, presenceId );
       
   257             CleanupStack::PopAndDestroy( 2, presenceIdBuf );
       
   258             break;
       
   259             }
       
   260         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlockList:
       
   261             {
       
   262             RXIMPObjOwningPtrArray< CPresenceBlockInfoImp > array;
       
   263             CleanupClosePushL( array );
       
   264             TXIMPObjectPacker< CPresenceBlockInfoImp >::UnPackArrayL( array, aCommand );
       
   265             CXIMPObjectCollectionImp* objCollection = CXIMPObjectCollectionImp::NewLC();
       
   266             for( TInt a = 0; a < array.Count(); ++a )
       
   267                 {
       
   268                 objCollection->AddObjectL( array[ a ] );
       
   269                 array[ a ] = NULL;
       
   270                 }
       
   271 
       
   272             iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockListL( objCollection );
       
   273             CleanupStack::Pop( objCollection );
       
   274             CleanupStack::PopAndDestroy(); // array
       
   275             break;
       
   276             }
       
   277         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlocked:
       
   278             {
       
   279             CPresenceBlockInfoImp* infoFromServer =
       
   280                                 CPresenceBlockInfoImp::NewLC();
       
   281             TXIMPObjectPacker<CPresenceBlockInfoImp>::UnPackL(
       
   282                                     *infoFromServer, aCommand );
       
   283             iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockedL( infoFromServer );
       
   284             CleanupStack::Pop( infoFromServer );
       
   285             break;
       
   286             }
       
   287         case CXIMPTestFileSrvMsg::ETestSrvMsgPresenceBlockCanceled:
       
   288             {
       
   289             CXIMPIdentityImp* idFromServer = CXIMPIdentityImp::NewLC();
       
   290             TXIMPObjectPacker<CXIMPIdentityImp>::UnPackL( *idFromServer,
       
   291                                                             aCommand );
       
   292 
       
   293             iHost.ProtocolPresenceDataHost().AuthorizationDataHost().HandlePresenceBlockCanceledL( idFromServer );
       
   294 
       
   295             CleanupStack::Pop( idFromServer );
       
   296             break;
       
   297             }
       
   298 
       
   299         case CXIMPTestFileSrvMsg::ETestSrvMsgReqParamIdentity:
       
   300             {
       
   301             CXIMPIdentityImp* groupId = CXIMPIdentityImp::NewLC();
       
   302             TXIMPObjectPacker< CXIMPIdentityImp >::UnPackL( *groupId, aCommand );
       
   303             CXIMPRestrictedObjectCollectionImp* paramCollection = CXIMPRestrictedObjectCollectionImp::NewLC();
       
   304             paramCollection->AddOrReplaceTypeL( groupId );
       
   305             iMessenger.SetReqCompleteParams( paramCollection );
       
   306             CleanupStack::Pop( 2, groupId );
       
   307             break;
       
   308             }
       
   309         default:
       
   310             {
       
   311             User::Panic( _L( "Not valid commandtype" ), 59 );
       
   312             break;
       
   313             }
       
   314         }
       
   315     }
       
   316 
       
   317 // End of file