diff -r 000000000000 -r 96612d01cf9f videofeeds/server/tsrc/IptvTestUtility/src/CIptvTestSMApiUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/tsrc/IptvTestUtility/src/CIptvTestSMApiUtil.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,624 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Object to offer some common utility functions to Iptv engine testing* +*/ + + + + +// INCLUDE FILES +#include +#include "CIptvTestSMApiUtil.h" +#include "CIptvService.h" +#include "VCXTestLog.h" +#include +//#include +#include "CIptvTestActiveWait.h" + +#include "CIptvServiceManagementClient.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CIptvTestSMApiUtil::CIptvTestSMApiUtil +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CIptvTestSMApiUtil::CIptvTestSMApiUtil() + { + } + +// ----------------------------------------------------------------------------- +// CIptvTestSMApiUtil::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CIptvTestSMApiUtil::ConstructL() + { + iIptvServiceManagementClient = CIptvServiceManagementClient::NewL(*this); + iActiveWait = CIptvTestActiveWait::NewL(); + + iRefreshNeeded = ETrue; + } + +// ----------------------------------------------------------------------------- +// CIptvServicesFromFile::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CIptvTestSMApiUtil* CIptvTestSMApiUtil::NewL() + { + VCXLOGLO1(">>>CIptvTestSMApiUtil::NewL"); + CIptvTestSMApiUtil* self = new( ELeave ) CIptvTestSMApiUtil; + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + VCXLOGLO1("<<>>CIptvTestSMApiUtil::~CIptvTestSMApiUtil"); + + iServicesArray.ResetAndDestroy(); + + delete iActiveWait; + + if(iIptvServiceManagementClient) + { + delete iIptvServiceManagementClient; + iIptvServiceManagementClient=NULL; + } + + iFsSession.Close(); + + VCXLOGLO1("<<=0; i--) + { + if( iServicesArray[i]->GetId() == aId ) + { + return CopyServiceL( *iServicesArray[i] ); + } + } + + return NULL; + } + +// ----------------------------------------------------------------------------- +// CIptvTestSMApiUtil::GetUsedIap +// ----------------------------------------------------------------------------- +// +TBool CIptvTestSMApiUtil::GetUsedIap(TUint32 aServiceId, TUint32& aIAPId, TDes& aIapName) + { + VCXLOGLO1(">>>CIptvTestSMApiUtil::GetUsedIap"); + TBool rv = ETrue; + + CIptvNetworkSelection::TConnectionPermission connectionPermission; + CIptvNetworkSelection::TRespStatus respStatus; + + TRAPD(error, iIptvServiceManagementClient->GetUsedIapL(aServiceId, + aIAPId, + aIapName, + connectionPermission, + respStatus)); + if(error != KErrNone || + respStatus != CIptvNetworkSelection::ESucceeded) + { + VCXLOGLO1("<<& aServicesArray, TUint32 aFlagsFilter, + CIptvServiceManagementClient::TOrder aOrder) + { + VCXLOGLO1(">>>CIptvTestSMApiUtil::GetServicesFromDbL"); + + aServicesArray.ResetAndDestroy(); + + TInt err = KErrNone, err2 = KErrNone; + + TRAP(err2, err = iIptvServiceManagementClient->GetServicesReqL( aFlagsFilter, aOrder ) ); + + if(err2 != KErrNone) + { + VCXLOGLO2("GetServicesReqL caused a leave: %d", err2); + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + + TBool ret = ETrue; + if( iSMRespStatus != MIptvServiceManagementClientObserver::ESucceeded + && iSMRespStatus != MIptvServiceManagementClientObserver::EEmpty + ) + { + ret = EFalse; + } + + for(TInt i = 0; i < iServicesArray.Count(); i++) + { + aServicesArray.Append( CopyServiceL( *iServicesArray[i] ) ); + } + + VCXLOGLO1("<<& aServicesArray) + { + VCXLOGLO1(">>>CIptvTestSMApiUtil::GetServicesFromDbL (2)"); + + aServicesArray.ResetAndDestroy(); + + if( iRefreshNeeded ) + { + RefreshServicesL(); + } + + for(TInt i = 0; i < iServicesArray.Count(); i++) + { + aServicesArray.Append( CopyServiceL( *iServicesArray[i] ) ); + } + + VCXLOGLO1("<<>>CIptvTestSMApiUtil::RefreshServicesL"); + iServicesArray.ResetAndDestroy(); + + if( iRefreshingServices ) + { + VCXLOGLO1("<<GetServicesReqL(0, CIptvServiceManagementClient::EDisplayOrderAscending )); + + if(err2 != KErrNone) + { + VCXLOGLO2("GetServicesReqL caused a leave: %d", err2); + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + + TBool ret = ETrue; + if( iSMRespStatus != MIptvServiceManagementClientObserver::ESucceeded + && iSMRespStatus != MIptvServiceManagementClientObserver::EEmpty + ) + { + ret = EFalse; + } + + VCXLOGLO1("<<SetL( buff->Des() ); + CleanupStack::PopAndDestroy(buff); + CleanupStack::Pop(iptvService); + + return iptvService; + } + +// ----------------------------------------------------------------------------- +// CIptvTestSMApiUtil::SetUsedIap(TUint32 aServiceId, TUint32 aIapId) +// +// Sets default iap for a service, and set connecting allowed for the iap. +// ----------------------------------------------------------------------------- +// +TInt CIptvTestSMApiUtil::SetUsedIap(TUint32 aServiceId, TUint32 aIapId) + { + TInt err(KErrNone); + CIptvNetworkSelection::TRespStatus respStatus; + + TRAP(err, iIptvServiceManagementClient->SetUsedIapL(aIapId, aServiceId, ETrue, respStatus)); + + if(KErrNone != err) + { + VCXLOGLO1("CIptvServiceManagementClient::SetUsedIapL leaved"); + return err; + } + else if( CIptvNetworkSelection::ESucceeded != respStatus ) + { + VCXLOGLO1("CIptvServiceManagementClient::SetUsedIapL returned error"); + return respStatus; + } + + TRAP(err, iIptvServiceManagementClient->SetConnectionAllowedL(ETrue, aIapId, respStatus)); + + if(KErrNone != err) + { + VCXLOGLO1("CIptvServiceManagementClient::SetConnectionAllowedL leaved"); + return err; + } + + else if( CIptvNetworkSelection::ESucceeded != respStatus ) + { + VCXLOGLO1("CIptvServiceManagementClient::SetConnectionAllowedL returned error"); + return respStatus; + } + + return err; + } + +// ----------------------------------------------------------------------------- +// CIptvTestSMApiUtil::RefreshService(TUint32 aServiceId) +// +// Loads old service, creates a new duplicate of it and delete the old service. +// Useful for testing scheduled download, because all the contents seems to be +// new, not previously downloaded after calling this for a service. +// Old service id is not valid after calling this +// ----------------------------------------------------------------------------- +// +TInt CIptvTestSMApiUtil::RefreshService(TUint32 aServiceId, TTime aLastDownloadTime) + { + VCXLOGLO1(">>>CIptvTestSMApiUtil::RefreshService"); + MIptvServiceManagementClientObserver::TRespStatus status; + TInt leave(KErrNone); + TInt err(KErrNone); + CIptvService* service(NULL); + + TRAP(leave, service = GetServiceFromDb(aServiceId)); + + if( leave!=KErrNone || service==NULL ) + { + VCXLOGLO1("<<DeleteServiceL(aServiceId, status)); + + if( MIptvServiceManagementClientObserver::ESucceeded != status || + KErrNone != leave || KErrNone != err) + { + VCXLOGLO1("<< buf; + TTime now; + now.HomeTime(); + buf.Format(Kd, now.Int64()); + service->SetProviderId(buf); + + // After this it seems that downloas haven't ever been scheduled for this service. + service->SetScheduledLastDownloadTime(aLastDownloadTime); + + TRAP(leave, err = iIptvServiceManagementClient->AddServiceL(*service, status)); + + if( MIptvServiceManagementClientObserver::ESucceeded != status|| + KErrNone != leave|| KErrNone != err ) + { + VCXLOGLO1("<<>>CIptvTestSMApiUtil::GetServicesResp"); + + iRefreshNeeded = EFalse; + switch(iSMRespStatus) + { + case MIptvServiceManagementClientObserver::ESucceeded: + { + VCXLOGLO1("GetServicesReqL response: ESucceeded"); + break; + } + + case MIptvServiceManagementClientObserver::EEmpty: + { + VCXLOGLO1("GetServicesReqL response: EEmpty"); + break; + } + + case MIptvServiceManagementClientObserver::EServiceNotFound: + { + VCXLOGLO1("GetServicesReqL response: EServiceNotFound"); + iRefreshNeeded = ETrue; + break; + } + + case MIptvServiceManagementClientObserver::EGeneralError: + { + VCXLOGLO1("GetServicesReqL response: EGeneralError"); + iRefreshNeeded = ETrue; + break; + } + + case MIptvServiceManagementClientObserver::ECancelled: + { + VCXLOGLO1("GetServicesReqL response: ECancelled"); + iRefreshNeeded = ETrue; + break; + } + + default: + { + VCXLOGLO2("GetServicesReqL response: unknown: %d", aRespStatus); + iRefreshNeeded = ETrue; + break; + } + } + + iSMRespStatus = aRespStatus; + iRefreshingServices = EFalse; + + if( aServicesArray ) + { + iServicesArray.ResetAndDestroy(); + + CIptvService* iptvService = NULL; + + for(TInt i = 0; i < aServicesArray->MdcaCount(); i++) + { + iptvService = CIptvService::NewL(); + CleanupStack::PushL(iptvService); + iptvService->SetL(aServicesArray->MdcaPoint(i)); + iServicesArray.Append( iptvService ); + VCXLOGLO3("CIptvTestSMApiUtil:: service id: %d, name: %S", iptvService->GetId(), &(iptvService->GetName()) ); + CleanupStack::Pop(iptvService); + iptvService = NULL; + } + + aServicesArray->Reset(); + delete aServicesArray; + aServicesArray = NULL; + } + else + { + VCXLOGLO1("CIptvTestSMApiUtil:: aServicesArray = NULL"); + iRefreshNeeded = ETrue; + } + + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + + VCXLOGLO1("<<>>CIptvTestSMApiUtil::HandleSmEvent"); + VCXLOGLO2(">>>CIptvTestSMApiUtil:: Event: %d", aEvent.iEvent ); + switch( aEvent.iEvent ) + { + case CIptvSmEvent::EServiceAdded: + case CIptvSmEvent::EServiceModified: + case CIptvSmEvent::EServiceScheduleModified: + case CIptvSmEvent::EServiceDeleted: + { + iRefreshNeeded = ETrue; + } + break; + + case CIptvSmEvent::EServiceSelectionModified: + { + + } + break; + + default: + { + } + break; + } + VCXLOGLO1("<<