videoutils_plat/videoconnutility_api/tsrc/VCXTestCommon/src/IptvTestDownloadManager.cpp
branchRCL_3
changeset 48 13a33d82ad98
parent 0 822a42b6c3f1
equal deleted inserted replaced
47:826cea16efd9 48:13a33d82ad98
       
     1 /*
       
     2 * Copyright (c) 2008 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 the License "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: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 
       
    21 #include <e32base.h>
       
    22 #include <f32file.h>
       
    23 #include <DownloadMgrClient.h>
       
    24 #include <HttpDownloadMgrCommon.h>
       
    25 
       
    26 #include "IptvTestDownloadManager.h"
       
    27 #include "VCXTestLog.h"
       
    28 #include "CIptvTestTimer.h"
       
    29 
       
    30 // ========================== MEMBER FUNCTIONS ===============================
       
    31 
       
    32 // ---------------------------------------------------------------------------
       
    33 // CTestUtilConnection::NewL()
       
    34 //
       
    35 // Constructs CTestUtilConnection object
       
    36 // ---------------------------------------------------------------------------
       
    37 //
       
    38 EXPORT_C CIptvTestDownloadManager* CIptvTestDownloadManager::NewL(MTestUtilDownloadObserver *aObs)
       
    39     {
       
    40     VCXLOGLO1(">>>CIptvTestDownloadManager::NewL");
       
    41     CIptvTestDownloadManager* self = NewLC(aObs);
       
    42     CleanupStack::Pop(self);
       
    43     VCXLOGLO1("<<<CIptvTestDownloadManager::NewL");
       
    44     return self;
       
    45     }
       
    46 
       
    47 // ---------------------------------------------------------------------------
       
    48 // CTestUtilConnection::NewLC()
       
    49 //
       
    50 // Constructs CTestUtilConnection object
       
    51 // ---------------------------------------------------------------------------
       
    52 //
       
    53 EXPORT_C CIptvTestDownloadManager* CIptvTestDownloadManager::NewLC(MTestUtilDownloadObserver *aObs)
       
    54     {
       
    55     VCXLOGLO1(">>>CIptvTestDownloadManager::NewLC");
       
    56     CIptvTestDownloadManager* self = new (ELeave) CIptvTestDownloadManager(aObs);
       
    57     CleanupStack::PushL(self);
       
    58     self->ConstructL();
       
    59     VCXLOGLO1("<<<CIptvTestDownloadManager::NewLC");
       
    60     return self;
       
    61     }
       
    62 
       
    63 // ---------------------------------------------------------------------------
       
    64 // CTestUtilConnection::CTestUtilConnection()
       
    65 //
       
    66 // Constructor
       
    67 // ---------------------------------------------------------------------------
       
    68 //
       
    69 CIptvTestDownloadManager::CIptvTestDownloadManager(MTestUtilDownloadObserver *aObs)
       
    70 : iObserver(aObs)
       
    71     {
       
    72     VCXLOGLO1(">>>CIptvTestDownloadManager::CIptvTestUtilConnection");
       
    73 
       
    74     VCXLOGLO1("<<<CIptvTestDownloadManager::CIptvTestUtilConnection");
       
    75     }
       
    76 
       
    77 // ---------------------------------------------------------------------------
       
    78 // CTestUtilConnection::~CTestUtilConnection()
       
    79 //
       
    80 // Destructor
       
    81 // ---------------------------------------------------------------------------
       
    82 //
       
    83 EXPORT_C CIptvTestDownloadManager::~CIptvTestDownloadManager()
       
    84     {
       
    85     VCXLOGLO1(">>>CIptvTestDownloadManager::~CIptvTestDownloadManager");
       
    86 
       
    87 	iDownloadMgr.DeleteAll();
       
    88 	iDownloadMgr.RemoveObserver(*this);
       
    89 	iDownloadMgr.Close();
       
    90 
       
    91 	if( iDownload )
       
    92 		{
       
    93 		iDownload->Delete();
       
    94 		iDownload = NULL;
       
    95 		}
       
    96 
       
    97     if( iTimer )
       
    98         {
       
    99         delete iTimer;
       
   100         iTimer = NULL;
       
   101         }
       
   102 
       
   103     VCXLOGLO1("<<<CIptvTestDownloadManager::~CIptvTestDownloadManager");
       
   104     }
       
   105 
       
   106 // ---------------------------------------------------------------------------
       
   107 // CIptvTestDownloadManager::ConstructL()
       
   108 //
       
   109 // Second phase constructor
       
   110 // ---------------------------------------------------------------------------
       
   111 //
       
   112 EXPORT_C void CIptvTestDownloadManager::ConstructL()
       
   113     {
       
   114     VCXLOGLO1(">>>CIptvTestDownloadManager::ConstructL");
       
   115 
       
   116 	iDownloadRunning = EFalse;
       
   117 	TUid uid;
       
   118 	uid.iUid = 0x101FB3E3;
       
   119 	iDownloadMgr.ConnectL(uid, *this, ETrue);
       
   120 
       
   121     iTimer = CIptvTestTimer::NewL(*this, 0);
       
   122 
       
   123    	VCXLOGLO1("<<<CIptvTestDownloadManager::ConstructL");
       
   124     }
       
   125 
       
   126 
       
   127 // ---------------------------------------------------------------------------
       
   128 // CIptvTestDownloadManager::HandleDMgrEventL()
       
   129 //
       
   130 // ---------------------------------------------------------------------------
       
   131 //
       
   132 void CIptvTestDownloadManager::HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent )
       
   133 	{
       
   134 	VCXLOGLO1(">>>CIptvTestDownloadManager::HandleDMgrEventL");
       
   135 
       
   136 	TInt32 downloadId;
       
   137 	aDownload.GetIntAttribute(EDlAttrId, downloadId);
       
   138 
       
   139 	VCXLOGLO3("CIptvTestDownloadManager:: downloadId: %d, aEvent: %d", downloadId, aEvent);
       
   140 
       
   141     switch (aEvent.iProgressState)
       
   142         {
       
   143         case EHttpContentTypeReceived:
       
   144             VCXLOGLO1("CIptvTestDownloadManager:: EHttpContentTypeReceived");
       
   145             User::LeaveIfError(aDownload.Start());
       
   146             break;
       
   147         case EHttpProgNone:
       
   148             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgNone");
       
   149             break;
       
   150         case EHttpStarted:
       
   151             VCXLOGLO1("CIptvTestDownloadManager:: EHttpStarted");
       
   152             break;
       
   153         case EHttpProgCreatingConnection:
       
   154             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgCreatingConnection");
       
   155             break;
       
   156         case EHttpProgConnectionNeeded:
       
   157             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgConnectionNeeded");
       
   158             break;
       
   159         case EHttpProgConnected:
       
   160             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgConnected");
       
   161             break;
       
   162         case EHttpProgConnectionSuspended:
       
   163             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgConnectionSuspended");
       
   164             break;
       
   165         case EHttpProgDisconnected:
       
   166             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgDisconnected");
       
   167             break;
       
   168         case EHttpProgDownloadStarted:
       
   169             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgDownloadStarted");
       
   170             break;
       
   171         case EHttpContentTypeRequested:
       
   172             VCXLOGLO1("CIptvTestDownloadManager:: EHttpContentTypeRequested");
       
   173             break;
       
   174         case EHttpProgSubmitIssued:
       
   175             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgSubmitIssued");
       
   176             break;
       
   177         case EHttpProgResponseHeaderReceived:
       
   178             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgResponseHeaderReceived");
       
   179             break;
       
   180         case EHttpProgResponseBodyReceived:
       
   181             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgResponseBodyReceived");
       
   182             break;
       
   183         case EHttpProgRedirectedPermanently:
       
   184             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgRedirectedPermanently");
       
   185             break;
       
   186         case EHttpProgRedirectedTemporarily:
       
   187             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgRedirectedTemporarily");
       
   188             break;
       
   189         case EHttpProgDlNameChanged:
       
   190             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgDlNameChanged");
       
   191             break;
       
   192         case EHttpProgContentTypeChanged:
       
   193             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgContentTypeChanged");
       
   194             break;
       
   195         case EHttpProgCodDescriptorDownloaded:
       
   196             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgCodDescriptorDownloaded");
       
   197             break;
       
   198         case EHttpProgCodDownloadStarted:
       
   199             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgCodDownloadStarted");
       
   200             break;
       
   201         case EHttpProgCodDescriptorAccepted:
       
   202             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgCodDescriptorAccepted");
       
   203             break;
       
   204         case EHttpProgCodLoadEnd:
       
   205             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgCodLoadEnd");
       
   206             break;
       
   207         case EHttpProgSupportedMultiPart:
       
   208             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgSupportedMultiPart");
       
   209             break;
       
   210         case EHttpProgMovingContentFile:
       
   211             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgMovingContentFilep");
       
   212             break;
       
   213         case EHttpProgContentFileMoved:
       
   214             VCXLOGLO1("CIptvTestDownloadManager:: EHttpProgContentFileMoved");
       
   215             break;
       
   216         default:
       
   217             VCXLOGLO1("CIptvTestDownloadManager:: Unknown state");
       
   218             break;
       
   219         }
       
   220 
       
   221     switch (aEvent.iDownloadState)
       
   222         {
       
   223         case EHttpDlCompleted:
       
   224             {
       
   225             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlCompleted");
       
   226 
       
   227 			DeleteDownloadAsync( KErrNone );
       
   228             }
       
   229             break;
       
   230 
       
   231         case EHttpDlFailed:
       
   232             {
       
   233 			TInt32 err;
       
   234 			GetError( aDownload, err );
       
   235 			VCXLOGLO2("CIptvTestDownloadManager:: Download failed, err: %d", err);
       
   236 			if( err == KErrNone )
       
   237 			    {
       
   238 			    err = KErrGeneral;
       
   239 			    }
       
   240 			DeleteDownloadAsync( err );
       
   241             }
       
   242             break;
       
   243 
       
   244         case EHttpDlCreated:
       
   245             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlCreated");
       
   246             iDownloadRunning = ETrue;
       
   247             break;
       
   248 
       
   249         case EHttpDlInprogress:
       
   250             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlInprogress");
       
   251             break;
       
   252 
       
   253         case EHttpDlPaused:
       
   254             {
       
   255             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlPaused");
       
   256 
       
   257 			TInt32 err;
       
   258 			GetError(aDownload, err);
       
   259 			VCXLOGLO2("CIptvTestDownloadManager:: Download is paused, err: %d", err);
       
   260 			if(err == KErrNone) err = KErrGeneral;
       
   261 
       
   262 			DeleteDownloadAsync( err );
       
   263             }
       
   264 	        break;
       
   265 
       
   266         case EHttpDlMoved:
       
   267             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlMoved");
       
   268             break;
       
   269 
       
   270         case EHttpDlMediaRemoved:
       
   271             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlMediaRemoved");
       
   272             break;
       
   273 
       
   274         case EHttpDlMediaInserted:
       
   275             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlMediaInserted");
       
   276             break;
       
   277 
       
   278         case EHttpDlPausable:
       
   279             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlPausable");
       
   280             break;
       
   281 
       
   282         case EHttpDlNonPausable:
       
   283             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlNonPausable");
       
   284             break;
       
   285 
       
   286         case EHttpDlDeleted:
       
   287             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlDeleted");
       
   288 
       
   289             if( !iDownloadFinishInformed )
       
   290                 {
       
   291                 VCXLOGLO1("CIptvTestDownloadManager:: Informing observer.");
       
   292                 iDownloadFinishInformed = ETrue;
       
   293                 iObserver->DownloadFinished( iError );
       
   294                 iDownloadRunning = EFalse;
       
   295                 }
       
   296             break;
       
   297 
       
   298         case EHttpDlAlreadyRunning:
       
   299             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlAlreadyRunning");
       
   300             break;
       
   301 
       
   302         case EHttpDlDeleting:
       
   303             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlDeleting");
       
   304             if( !iDownloadFinishInformed )
       
   305                 {
       
   306                 VCXLOGLO1("CIptvTestDownloadManager:: Informing observer.");
       
   307                 iDownloadFinishInformed = ETrue;
       
   308                 iObserver->DownloadFinished( iError );
       
   309                 iDownloadRunning = EFalse;
       
   310                 }
       
   311             break;
       
   312 
       
   313         case EHttpDlCancelTransaction:
       
   314             VCXLOGLO1("CIptvTestDownloadManager:: EHttpDlCancelTransaction");
       
   315             break;
       
   316 
       
   317         default:
       
   318             VCXLOGLO1("CIptvTestDownloadManager:: Unknown state");
       
   319             break;
       
   320         }
       
   321 
       
   322 
       
   323 	VCXLOGLO1("<<<CIptvTestDownloadManager::HandleDMgrEventL");
       
   324 	}
       
   325 
       
   326 // ---------------------------------------------------------------------------
       
   327 // CIptvTestDownloadManager::DownloadL()
       
   328 //
       
   329 // ---------------------------------------------------------------------------
       
   330 //
       
   331 EXPORT_C TInt CIptvTestDownloadManager::DownloadL( TDesC& aAddress, TDesC16& aOutFile, TDesC& aUserName, TDesC& aPassword, TInt32 aIapId, TInt aTimeoutSeconds)
       
   332 	{
       
   333 	VCXLOGLO1(">>>CIptvTestDownloadManager::DownloadL");
       
   334 
       
   335 	TBool result;
       
   336 
       
   337 	if( iDownload )
       
   338 		{
       
   339 		VCXLOGLO1("Download already ongoing.");
       
   340 		VCXLOGLO1("<<<CIptvTestDownloadManager::DownloadL");
       
   341 		return KErrNone;
       
   342 		}
       
   343 
       
   344 	iDownloadFinishInformed = EFalse;
       
   345 	iTimerStartedForDownloadDeletion = EFalse;
       
   346 	iError = KErrNone;
       
   347 
       
   348     iTimer->After(aTimeoutSeconds * 1000000);
       
   349 
       
   350     TBuf8<3000> address;
       
   351     TBuf8<256> username;
       
   352 	TBuf8<256> password;
       
   353 
       
   354 	address.Copy(aAddress);
       
   355 	username.Copy(aUserName);
       
   356 	password.Copy(aPassword);
       
   357 
       
   358 	VCXLOGLO3("CIptvTestDownloadManager:: Starting downloading: %S -> %S", &aAddress, &aOutFile);
       
   359 	VCXLOGLO3("CIptvTestDownloadManager:: User: %S, PW %S", &aUserName, &aPassword);
       
   360 	VCXLOGLO2("CIptvTestDownloadManager:: Timeout: %d", aTimeoutSeconds);
       
   361 
       
   362 	TInt err = KErrNone;
       
   363 
       
   364 	err = iDownloadMgr.SetIntAttribute( EDlMgrIap, aIapId );
       
   365     if ( err != KErrNone )
       
   366         {
       
   367         VCXLOGLO2("CIptvTestDownloadManager:: Could not set AP! err: %d", err);
       
   368         return err;
       
   369         }
       
   370 
       
   371 	RHttpDownload& download = iDownloadMgr.CreateDownloadL( address, result );
       
   372 
       
   373 	iDownload = &download;
       
   374 
       
   375     err = iDownload->SetStringAttribute( EDlAttrDestFilename, aOutFile);
       
   376     if(err != KErrNone)
       
   377     	{
       
   378     	VCXLOGLO1("Setting destfilename failed.");
       
   379     	VCXLOGLO1("<<<CIptvTestDownloadManager::DownloadL");
       
   380     	return err;
       
   381     	}
       
   382 
       
   383     download.SetBoolAttribute(EDlAttrNoContentTypeCheck, ETrue);
       
   384     download.SetIntAttribute(EDlAttrUserData, 0);
       
   385 
       
   386     err = download.SetStringAttribute(EDlAttrUsername, username);
       
   387     if(err != KErrNone)
       
   388     	{
       
   389     	VCXLOGLO1("Setting download username failed.");
       
   390     	VCXLOGLO1("<<<CIptvTestDownloadManager::DownloadL");
       
   391     	return err;
       
   392     	}
       
   393 
       
   394     err = download.SetStringAttribute(EDlAttrPassword, password);
       
   395     if(err != KErrNone)
       
   396     	{
       
   397     	VCXLOGLO1("Setting download password failed.");
       
   398     	VCXLOGLO1("<<<CIptvTestDownloadManager::DownloadL");
       
   399     	return err;
       
   400     	}
       
   401 
       
   402 	err = iDownload->Start();
       
   403     if(err != KErrNone)
       
   404     	{
       
   405     	VCXLOGLO1("Starting download failed.");
       
   406     	VCXLOGLO1("<<<CIptvTestDownloadManager::DownloadL");
       
   407     	return err;
       
   408     	}
       
   409 
       
   410 	VCXLOGLO1("<<<CIptvTestDownloadManager::DownloadL");
       
   411 
       
   412 	return err;
       
   413 	}
       
   414 
       
   415 // ---------------------------------------------------------
       
   416 // CIptvTestDownloadManager::GetError
       
   417 // ---------------------------------------------------------
       
   418 //
       
   419 EXPORT_C void CIptvTestDownloadManager::GetError(RHttpDownload& aDownload,
       
   420                                           TInt32& aDownloadError)
       
   421     {
       
   422     TInt32 errorId;
       
   423     TInt32 globalErrorId;
       
   424     aDownload.GetIntAttribute(EDlAttrErrorId, errorId);
       
   425     aDownload.GetIntAttribute(EDlAttrGlobalErrorId, globalErrorId);
       
   426     VCXLOGLO2("CIptvTestDownloadManager:: DL error ID: %d", errorId);
       
   427     VCXLOGLO2("CIptvTestDownloadManager:: DL global error ID: %d", globalErrorId);
       
   428 
       
   429     switch(errorId)
       
   430         {
       
   431         case EConnectionFailed:
       
   432             aDownloadError = EConnectionFailed;
       
   433             VCXLOGLO1("CIptvTestDownloadManager::  EConnectionFailed -> EIptvDlConnectionFailed");
       
   434             if(globalErrorId == KErrServerBusy)
       
   435                 {
       
   436                 VCXLOGLO1("CIptvTestDownloadManager:: server busy -> EIptvDlGeneral");
       
   437                 aDownloadError = KErrServerBusy;
       
   438                 }
       
   439             break;
       
   440         case EHttpAuthenticationFailed:
       
   441             VCXLOGLO1("CIptvTestDownloadManager::  EHttpAuthenticationFailed -> EIptvDlAuthFailed");
       
   442             aDownloadError = EHttpAuthenticationFailed;
       
   443             break;
       
   444         case EProxyAuthenticationFailed:
       
   445             VCXLOGLO1("CIptvTestDownloadManager::  EProxyAuthenticationFailed -> EIptvDlProxyAuthFailed");
       
   446             aDownloadError = EProxyAuthenticationFailed;
       
   447             break;
       
   448         case EDestFileInUse:
       
   449             VCXLOGLO1("CIptvTestDownloadManager::  EDestFileInUse -> EIptvDlDestFileInUse");
       
   450             aDownloadError = EDestFileInUse;
       
   451             break;
       
   452         case EBadUrl:
       
   453             VCXLOGLO1("CIptvTestDownloadManager::  EBadUrl -> EIptvDlBadUrl");
       
   454             aDownloadError = EBadUrl;
       
   455             break;
       
   456         case EMMCRemoved:
       
   457             VCXLOGLO1("CIptvTestDownloadManager::  EMMCRemoved -> EIptvDlMmcRemoved");
       
   458             aDownloadError = EMMCRemoved;
       
   459             break;
       
   460         case EDiskFull:
       
   461             VCXLOGLO1("CIptvTestDownloadManager::  EDiskFull -> EIptvDlDiskFull");
       
   462             aDownloadError = EDiskFull;
       
   463             break;
       
   464         case EObjectNotFound:
       
   465             VCXLOGLO1("CIptvTestDownloadManager::  EObjectNotFound -> EIptvDlContentNotFound");
       
   466             aDownloadError = EObjectNotFound;
       
   467             break;
       
   468 
       
   469         default:
       
   470             VCXLOGLO1("CIptvTestDownloadManager::  unknown -> EIptvDlGeneral");
       
   471             aDownloadError = KErrGeneral;
       
   472             break;
       
   473         }
       
   474     }
       
   475 
       
   476 // ---------------------------------------------------------
       
   477 // CIptvTestDownloadManager::DeleteDownloadAsync
       
   478 // ---------------------------------------------------------
       
   479 //
       
   480 void CIptvTestDownloadManager::DeleteDownloadAsync( TInt aErrorToObserver )
       
   481     {
       
   482     VCXLOGLO1(">>>CIptvTestDownloadManager::DeleteDownloadAsync");
       
   483     if( iDownload )
       
   484         {
       
   485         iTimer->After( 1000000 ); // 1 second
       
   486         iTimerStartedForDownloadDeletion = ETrue;
       
   487         iError = aErrorToObserver;
       
   488         }
       
   489     VCXLOGLO1("<<<CIptvTestDownloadManager::DeleteDownloadAsync");
       
   490     }
       
   491 
       
   492 void CIptvTestDownloadManager::TimerComplete( TInt aTimerId, TInt aError )
       
   493     {
       
   494     VCXLOGLO1(">>>CIptvTestDownloadManager::TimerComplete");
       
   495 
       
   496     VCXLOGLO3("CIptvTestDownloadManager:: aTimerId: %d, aError: %d", aTimerId, aError);
       
   497 
       
   498     if( iTimerStartedForDownloadDeletion )
       
   499         {
       
   500         iTimerStartedForDownloadDeletion = EFalse;
       
   501         VCXLOGLO1("IptvTestDownloadManager:: Deleting the download.");
       
   502 
       
   503         if( iDownload )
       
   504             {
       
   505             iDownload->Delete();
       
   506             iDownload = NULL;
       
   507             }
       
   508 
       
   509         // Obsever is informed at DL deletion.
       
   510         }
       
   511     else
       
   512         {
       
   513         iObserver->DownloadFinished(KErrTimedOut);
       
   514         }
       
   515 
       
   516     VCXLOGLO1("<<<CIptvTestDownloadManager::TimerComplete");
       
   517     }
       
   518 
       
   519 //  End of File