diff -r 000000000000 -r 96612d01cf9f videofeeds/server/tsrc/IptvTestUtility/src/CIptvTestDlInfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/tsrc/IptvTestUtility/src/CIptvTestDlInfo.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,431 @@ +/* +* 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: implements logging functionality of the download information* +*/ + + + + +// INCLUDE FILES +#include "CIptvTestDlInfo.h" +#include "VCXTestLog.h" +#include "CIptvMyVideosGlobalFileId.h" +#include "CIptvTestUtilities.h" +#include "CIptvMediaContent.h" +#include + +#include "CIptvVodContentContentFullDetails.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 =============================== + +// ----------------------------------------------------------------------------- +// CIptvTestDlInfo:: +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvTestDlInfo* CIptvTestDlInfo::NewL() + { + VCXLOGLO1(">>>CIptvTestDlInfo::NewL"); + CIptvTestDlInfo* self = new (ELeave) CIptvTestDlInfo(); + CleanupStack::PushL(self); + self->ConstructL( ); + CleanupStack::Pop(); + VCXLOGLO1("<<>>CIptvTestDlInfo::~CIptvTestDlInfo"); + TUint i=0; + if(iIptvTestUtilities) + { + delete iIptvTestUtilities; + iIptvTestUtilities=NULL; + } + + //print and remove remaining file infos + for(i = 0;i < iDlFileInfoArray.Count(); i++) + { + RemoveDlFileInfoItem(i); + } + iDlFileInfoArray.ResetAndDestroy(); + + VCXLOGLO1("<<>>CIptvTestDlInfo::CIptvTestDlInfo"); + + VCXLOGLO1("<<>>CIptvTestDlInfo::ConstructL"); + iIptvTestUtilities = CIptvTestUtilities::NewL(); + + VCXLOGLO1("<<>>CIptvTestDlInfo::FindDlFileInfo"); + _LIT(KFindDlFileInfo, "CIptvTestDlInfo::FindDlFileInfo:"); + TBool rv = FALSE; + TUint i=0; + for(i = 0;i < iDlFileInfoArray.Count(); i++) + { + if(iDlFileInfoArray[i]->iServiceId == aServiceId && iDlFileInfoArray[i]->iContentId == aContentId) + { + aIndex = i; + rv = TRUE; + break; + } + } + //panic if not found!! + if(!rv) + { + VCXLOGLO1("DlFileInfo instance not found, PANICing!!!"); + User::Panic( KFindDlFileInfo, 0 ); + } + + VCXLOGLO1("<<>>CIptvTestDlInfo::RemoveDlFileInfoItem"); + _LIT(KRemoveDlFileInfo, "CIptvTestDlInfo::RemoveDlFileInfoItem:"); + + TBool rv = ETrue; + CIptvTestDlFileInfo * p = NULL; + //check that index is not out of range + if(index >= iDlFileInfoArray.Count()) + { + rv = EFalse; + VCXLOGLO1("DlFileInfo instance not found, PANICing!!!"); + User::Panic( KRemoveDlFileInfo, 0 ); + } + else + { + p = iDlFileInfoArray[index]; + iDlFileInfoArray.Remove(index); + if(p) + { + delete p; + p = NULL; + } + } + VCXLOGLO1(">>>CIptvTestDlInfo::RemoveDlFileInfoItem"); + return rv; + } + +// ----------------------------------------------------------------------------- +// CIptvTestDlInfo::CreateDlFileInfoItem +// Creates new CIptvTestDlFileInfo item when new download has been started +// ----------------------------------------------------------------------------- +// +CIptvTestDlFileInfo* CreateDlFileInfoItem() + { + VCXLOGLO1(">>>CIptvTestDlInfo::CreateDlFileInfoItem"); + CIptvTestDlFileInfo* p = NULL; + + p = CIptvTestDlFileInfo::NewL(); + + VCXLOGLO1("<<>>CIptvTestDlInfo::DlStart"); + CIptvTestDlFileInfo* p = CreateDlFileInfoItem(); + + HBufC* contentUrl = NULL; + + //get Iapname, servicename + TBuf<255> iapName; + TBuf<255> serviceName; + + //Get the name of the service + + CIptvService* pService = iIptvTestUtilities->GetServiceFromDb(aServiceId); + if(pService) + { + serviceName.Append(pService->GetName()); + delete pService; + pService = NULL; + } + else + { + //do nothing + } + + //Get the name of the IAP + iIptvTestUtilities->GetIapNameById(iapName, aIapId); + + RPointerArray CAList; + + TInt err = KErrNone, ret = KErrNone; + TRAP(err, ret = iIptvTestUtilities->GetContentAccessListL(aServiceId, aContentId, CAList)); + + CleanupResetAndDestroyPushL(CAList); + + if(err != KErrNone) + { + VCXLOGLO2("* ERROR * GetContentAccessListLApiTest leaved !: %d", err); + } + else if(ret != KErrNone) + { + VCXLOGLO2("* ERROR * GetContentAccessListLApiTest returned error: %d", ret); + } + else + { + if(CAList.Count() <= aDlContentNum) + { + VCXLOGLO1("* ERROR * Content has not enough media contents. Downloading the first content."); + aDlContentNum = 0; + } + else + if(CAList.Count() == 0) + { + VCXLOGLO1("* ERROR * Content has no media content. Can't start download!"); + + } + else + { + // Everything ok to start the DL + iDlFileInfoArray.Append(p); + + const TPtrC url = CAList[aDlContentNum]->GetMediaContentUrl(); + + TInt length = url.Length(); + contentUrl = HBufC::NewLC(length); + + TPtr16 pContentUrl = contentUrl->Des(); + pContentUrl.Copy( url ); + CleanupStack::Pop(contentUrl); + + VCXLOGLO2("Content download url = %S", contentUrl); + + //store information to item + p->DlStarted( + aIapId, + iapName, + aServiceId, + serviceName, + aContentId, + aDlType, + contentUrl); //ownership of the pointer moved!!! + } + + } + + + CleanupStack::PopAndDestroy(&CAList); + + VCXLOGLO1("<<>>CIptvTestDlInfo::DlStartFailed"); + TInt index = 0; + + //find the actual download information + FindDlFileInfo(index, aServiceId, aContentId); + + //store the error id to downloadinformation + iDlFileInfoArray[index]->DlStartFailed(aError); + + //print the information to log + iDlFileInfoArray[index]->Print(); + + //Remove the item which contains information about this download + RemoveDlFileInfoItem(index); + VCXLOGLO1(">>>CIptvTestDlInfo::DlStartFailed"); + } +// ----------------------------------------------------------------------------- +// CIptvTestDlInfo::DlGoing +// stores name of the file to download information +// ----------------------------------------------------------------------------- +// +EXPORT_C void CIptvTestDlInfo::DlGoing(TIptvServiceId aServiceId, + TIptvContentId aContentId, + CIptvMyVideosGlobalFileId& aFileId, + TUint32 aState, + TIptvDlError aError ) + { + VCXLOGLO1(">>>CIptvTestDlInfo::DlGoing"); + + TBuf<255> videoName;//created because of the interface, not used + TBuf<255> fullPath; + TInt index = 0; + + TUint32 serviceId = 0; //created because of the interface, not used + + iIptvTestUtilities->GetVideoInfo(aFileId,serviceId,videoName,fullPath); + + //find the actual download information + FindDlFileInfo(index, aServiceId, aContentId); + + //store the info to download information + iDlFileInfoArray[index]->DlGoing(fullPath, aState, aError); + + VCXLOGLO1("<<>>CIptvTestDlInfo::DlUpdateState"); + TInt index = 0; + + //find the actual download information + FindDlFileInfo(index, aServiceId, aContentId); + + //update state to download information + iDlFileInfoArray[index]->DlUpdateState( aState, aError); + VCXLOGLO1(">>>CIptvTestDlInfo::DlUpdateState"); + } +// ----------------------------------------------------------------------------- +// CIptvTestDlInfo::DlStop +// updates state of the download to download information prints the info to log +// and removes the item +// ----------------------------------------------------------------------------- +// +EXPORT_C void CIptvTestDlInfo::DlStop(TIptvServiceId aServiceId, + TIptvContentId aContentId, + TUint32 aState, + TIptvDlError aError ) + { + VCXLOGLO1(">>>CIptvTestDlInfo::DlStop"); + TInt index = 0; + TUint32 fileSize = 0; + //find the actual download information + FindDlFileInfo(index, aServiceId, aContentId); + + //Get the name of the downloaded file + TDesC& fileName = iDlFileInfoArray[index]->GetFileName(); + + //Get the size of the downloaded file + iIptvTestUtilities->GetFileSize(fileName,fileSize); + + //store the information about stopping + iDlFileInfoArray[index]->DlStopped(fileSize, aState, aError); + + //print the information to log + iDlFileInfoArray[index]->Print(); + + //Remove the item which contains information about this download + RemoveDlFileInfoItem(index); + VCXLOGLO1(">>>CIptvTestDlInfo::DlStop"); + } +// ----------------------------------------------------------------------------- +// CIptvTestDlInfo::DlTimeout +// Prints and removes download information when download didn't get ready in time. +// +// ----------------------------------------------------------------------------- +// +EXPORT_C void CIptvTestDlInfo::DlTimeOut(TIptvServiceId aServiceId, + TIptvContentId aContentId + ) + { + VCXLOGLO1(">>>CIptvTestDlInfo::DlTimeOut"); + + TInt index = 0; + + //find the actual download information + FindDlFileInfo(index, aServiceId, aContentId); + + //store the information about timeout + iDlFileInfoArray[index]->DlTimeOut(); + + //print the information to log + //iDlFileInfoArray[index]->Print(); + + //Remove the item which contains information about this download + //RemoveDlFileInfoItem(index); changed, waiting for deleted - event + + VCXLOGLO1("<<