diff -r 000000000000 -r 96612d01cf9f videofeeds/server/tsrc/VCXServiceManagementApiTest/src/CIptvServiceManagementSync.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/tsrc/VCXServiceManagementApiTest/src/CIptvServiceManagementSync.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,1972 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + + +// INCLUDE FILES +#include "CIptvServiceManagementSync.h" +#include "CIptvServiceManagementClient.h" +#include "CIptvTestUtilities.h" +#include "CIptvService.h" +#include "VCXTestLog.h" +#include "CIptvTestTimer.h" +#include "CIptvTestActiveWait.h" + +#include +#include +#include +//#include + +// ========================= MEMBER FUNCTIONS ================================== + +// ----------------------------------------------------------------------------- +// CIptvServiceManagementSync::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +CIptvServiceManagementSync* CIptvServiceManagementSync::NewL() + { + VCXLOGLO1(">>>CIptvServiceManagementSync::NewL"); + CIptvServiceManagementSync* self = new (ELeave) CIptvServiceManagementSync; + + CleanupStack::PushL( self ); + self->ConstructL(); + + CleanupStack::Pop(); + VCXLOGLO1("<<>>CIptvServiceManagementSync::ConstructL"); + + iActiveWait = CIptvTestActiveWait::NewL(); + + iIptvTestTimer = CIptvTestTimer::NewL( *this, 0 ); + + iIptvServiceManagementClient = CIptvServiceManagementClient::NewL(*this); + + TRAPD(err, iIptvTestUtilities = CIptvTestUtilities::NewL() ); + if(err != KErrNone) + { + VCXLOGLO1("CIptvServiceManagementSync:: ** FAIL ** Creating CIptvTestUtilities failed! Leaving."); + User::Leave(KErrGeneral); + } + + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CIptvServiceManagementSync"); + + VCXLOGLO1("<<>>~CIptvServiceManagementSync()"); + + if(iServicesArray) + { + iServicesArray->Reset(); + delete iServicesArray; + iServicesArray = NULL; + } + + delete iIptvServiceManagementClient; + iIptvServiceManagementClient = NULL; + + delete iIptvTestTimer; + iIptvTestTimer = NULL; + + delete iIptvTestUtilities; + iIptvTestUtilities = NULL; + + delete iActiveWait; + iActiveWait = NULL; + + VCXLOGLO1("<<<~CIptvServiceManagementSync()"); + } + +// ----------------------------------------------------------------------------- +// CIptvServiceManagementSync::CallAddService(TIptvSmTestConnection aConn, CIptvService& aService); +// Adds a service to Service data base. +// ----------------------------------------------------------------------------- +// +TRespStatus CIptvServiceManagementSync::CallAddService(TIptvSmTestConnection aConn, CIptvService& aService) + { + VCXLOGLO1(">>>CIptvServiceManagementSync::CallAddService()"); + + TInt err = KErrNone, err2 = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< 0) + { + SetExpectedSmEvent(CIptvSmEvent::EServiceAdded, 1); + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->AddServiceReqL(aService) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("AddServiceReqL caused a leave: %d", err2); + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + return EGeneralError; + } + if(err != KErrNone) + { + VCXLOGLO2("AddServiceReqL returned error: %d", err); + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + return EGeneralError; + } + } + + if(iSpecialAction == EIptvSmCancelNextAsyncRequest) + { + iIptvServiceManagementClient->CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + if(WaitForSmEvent() != KErrNone) + { + iSyncReturnValue = MIptvServiceManagementClientObserver::EGeneralError; + } + } + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + SetExpectedSmEvent(CIptvSmEvent::EServiceAdded, 1); + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->AddServiceL(aService, rv) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("AddServiceL caused a leave: %d", err2); + rv = EGeneralError; + } + else + if(err != KErrNone) + { + VCXLOGLO2("AddServiceL returned error: %d", err); + rv = EGeneralError; + } + else + if(MIptvServiceManagementClientObserver::ESucceeded != rv) + { + VCXLOGLO2("AddServiceL response error: %d", rv); + } + else + if(WaitForSmEvent() != KErrNone) + { + iSyncReturnValue = MIptvServiceManagementClientObserver::EGeneralError; + } + } + + iSyncReturnValue = rv; + } + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallUpdateService()"); + + TInt err = KErrNone, err2 = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< 0) + { + SetExpectedSmEvent(aExpectedEvent, 1); + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->UpdateServiceReqL(aService) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("UpdateServiceReqL caused a leave: %d", err2); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // wait for the response from server + if(WaitForSmEvent() != KErrNone) + { + iSyncReturnValue = MIptvServiceManagementClientObserver::EGeneralError; + } + } + + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + SetExpectedSmEvent(aExpectedEvent, 1); + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->UpdateServiceL(aService, rv) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("UpdateServiceL caused a leave: %d", err2); + rv = EGeneralError; + } + else + if(err != KErrNone) + { + VCXLOGLO2("UpdateServiceL returned error: %d", err); + rv = EGeneralError; + } + else + if(MIptvServiceManagementClientObserver::ESucceeded != rv) + { + VCXLOGLO2("UpdateServiceL response error: %d", rv); + } + else + if(WaitForSmEvent() != KErrNone) + { + iSyncReturnValue = MIptvServiceManagementClientObserver::EGeneralError; + } + + } + + iSyncReturnValue = rv; + } + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::GetServicesReqSync()"); + + TInt err = KErrNone, err2 = KErrNone; + + // this should be always NULL, otherwise there probably has been an error and we still own this + if(iServicesArray) + { + VCXLOGLO1("* ERROR * iServicesArray not NULL, error in previous GetServices request?"); + iServicesArray->Reset(); + delete iServicesArray; + iServicesArray = NULL; + } + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< 0) + { + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->GetServicesReqL(aStartId, aEndId) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("GetServicesReqL caused a leave: %d", err2); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->GetServicesL(aStartId, aEndId, iServicesArray, rv) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("GetServicesL caused a leave: %d", err2); + rv = EGeneralError; + } + else + if(err != KErrNone) + { + VCXLOGLO2("GetServicesL returned error: %d", err); + rv = EGeneralError; + } + else + if(MIptvServiceManagementClientObserver::ESucceeded != rv) + { + VCXLOGLO2("GetServicesL response error: %d", rv); + } + } + + iSyncReturnValue = rv; + } + + if(iSpecialAction == EIptvSmCancelNextAsyncRequest) + { + if(iServicesArray == NULL) + { + iServicesArray = new (ELeave) CDesC8ArraySeg(10); + } + } + + FinishRequest(); + + *aServicesArray = iServicesArray; + iServicesArray = NULL; // we don't need this anymore, ownership moves + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallGetServicesFiltered()"); + + TInt err = KErrNone, err2 = KErrNone; + + // this should be always NULL, otherwise there probably has been an error and we still own this + if(iServicesArray) + { + VCXLOGLO1("* ERROR * iServicesArray not NULL, error in previous GetServices request?"); + iServicesArray->Reset(); + delete iServicesArray; + iServicesArray = NULL; + } + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->GetServicesReqL(aSearchLimitFlags, aOrder) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("GetServicesReqL caused a leave: %d", err2); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<After(5 * 1000000); + + iIptvServiceManagementClient->CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + + } + else + { + VCXLOGLO1("Sync service request"); + + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->GetServicesL(aSearchLimitFlags, aOrder, iServicesArray, rv) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("GetServicesL caused a leave: %d", err2); + rv = EGeneralError; + } + if(err != KErrNone) + { + VCXLOGLO2("GetServicesL returned error: %d", err); + rv = EGeneralError; + } + } + + iSyncReturnValue = rv; + } + + + if(iSpecialAction == EIptvSmCancelNextAsyncRequest) + { + if(iServicesArray == NULL) + { + iServicesArray = new (ELeave) CDesC8ArraySeg(10); + } + } + + *aServicesArray = iServicesArray; + iServicesArray = NULL; // ownership moves + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallGetServicesByProviderId()"); + + TInt err = KErrNone, err2 = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< 0) + { + TRAP(err2, err = iIptvServiceManagementClient->GetServicesL(aProviderId, aServices) ); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("CallGetServicesByProviderId caused a leave: %d", err2); + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallDeleteService()"); + + TInt err = KErrNone, err2 = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + SetExpectedSmEvent(CIptvSmEvent::EServiceDeleted, 1); + TRAP(err2, err = iIptvServiceManagementClient->DeleteServiceReqL(aId) ); + iIptvTestTimer->After(2 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err2 != KErrNone) + { + VCXLOGLO2("DeleteServiceReqL caused a leave: %d", err2); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // don't just leave, wait possible request from server to end + VCXLOGLO1("<<CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); // wait for the response from server + if(WaitForSmEvent() != KErrNone) + { + iSyncReturnValue = MIptvServiceManagementClientObserver::EGeneralError; + } + } + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + SetExpectedSmEvent(CIptvSmEvent::EServiceDeleted, 1); + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err2, err = iIptvServiceManagementClient->DeleteServiceL(aId + iRequestRepeatCount, rv) ); + + VCXLOGLO1("Request done."); + + if(err2 == KErrNone && err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + VCXLOGLO1("Checking errors."); + + if(err2 != KErrNone) + { + VCXLOGLO2("DeleteServiceL caused a leave: %d", err2); + rv = EGeneralError; + } + else + if(err != KErrNone) + { + VCXLOGLO2("DeleteServiceL returned error: %d", err); + rv = EGeneralError; + } + else + if(MIptvServiceManagementClientObserver::ESucceeded != rv) + { + VCXLOGLO2("DeleteServiceL response error: %d", rv); + } + else + if(WaitForSmEvent() != KErrNone) + { + iSyncReturnValue = MIptvServiceManagementClientObserver::EGeneralError; + } + } + iSyncReturnValue = rv; + } + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallShutdownServer()"); + + TInt err = KErrNone; + + if(aConn == EIptvSmTestAsync) + { + VCXLOGLO1("Async service request"); + err = iIptvServiceManagementClient->ServerShutdownReq(); + if(err != KErrNone) + { + VCXLOGLO2("ServerShutdownReq returned error: %d", err); + VCXLOGLO1("<<CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + err = iIptvServiceManagementClient->ServerShutdown(rv); + if(err != KErrNone) + { + VCXLOGLO2("ServerShutdown returned error: %d", err); + rv = EGeneralError; + } + else + if(MIptvServiceManagementClientObserver::ESucceeded != rv) + { + VCXLOGLO2("ServerShutdown response error: %d", rv); + } + + iSyncReturnValue = rv; + } + VCXLOGLO1("<< 0) + { + + do // try again if server busy + { + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->SetUsedIapL(aIapId, aServiceId, aSetToDefaultForService, status) ); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err == KErrNone || err != KErrNotReady) break; // request ok + + timeOut -= 2; + } + while (timeOut > 0); + + if(err != KErrNone) + { + VCXLOGLO2("SetUsedIapL caused a leave: %d", err); + rv = EGeneralError; + if(err == KErrNotReady) + { + VCXLOGLO1(" - previous request still on server. Not ready"); + } + } + else + if(CIptvNetworkSelection::ESucceeded != status) + { + VCXLOGLO2("SetUsedIapL response error: %d", status); + rv = EGeneralError; + } + } + + // network selection api specific return values!! + + FinishRequest(); + + VCXLOGLO1("<< 0) + { + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + err = iIptvServiceManagementClient->ClearUsedIap(); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("ClearUsedIap returned error: %d", err); + rv = EGeneralError; + } + } + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallGetUsedIap()"); + + TInt err = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< iapName; + CIptvNetworkSelection::TRespStatus status = CIptvNetworkSelection::ESucceeded; + CIptvNetworkSelection::TConnectionPermission connectionPermission; + + if(iRequestRepeatCount <= 0) iRequestRepeatCount = 1; + + // network selection api specific return values!! + if(aConn == EIptvSmTestAsync) + { + + VCXLOGLO1("Async service request"); + + while(iRequestRepeatCount-- > 0) + { + + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->GetUsedIapReqL(aServiceId) ); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("GetUsedIapReqL caused a leave: %d", err); + rv = EGeneralError; + iSyncReturnValue = rv; + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + return rv; + } + } + + if(iSpecialAction == EIptvSmCancelNextAsyncRequest) + { + iIptvServiceManagementClient->CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + + aIapId = iIapId; + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->GetUsedIapL(aServiceId, + aIapId, + iapName , + connectionPermission, + status) ); + + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("GetUsedIapL caused a leave: %d", err); + rv = EGeneralError; + } + else + if(CIptvNetworkSelection::ESucceeded != status) + { + VCXLOGLO2("GetUsedIapL response error: %d", status); + rv = EGeneralError; + } + } + + iSyncReturnValue = rv; + } + + if(iSyncReturnValue == ESucceeded) + { + VCXLOGLO2("aIapId = %d",aIapId); + VCXLOGLO2("iapName = %S",&iapName); + VCXLOGLO2("connectionPermission = %d",connectionPermission); + VCXLOGLO2("status = %d",status); + } + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallSetAllIaps()"); + + TInt err = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< iapName; + + if(iRequestRepeatCount <= 0) iRequestRepeatCount = 1; + + // network selection api specific return values!! + if(aConn == EIptvSmTestAsync) + { + VCXLOGLO1("Async service request"); + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->SetAllIapsReqL(aIapList, aIgnoreReadOnlyFlag) ); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("SetAllIapsReqL caused a leave: %d", err); + VCXLOGLO1("<<CancelRequest(); + VCXLOGLO1("Canceling request to server."); + } + else + { + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + } + + } + else + { + VCXLOGLO1("Sync service request"); + TRespStatus rv = ESucceeded; + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->SetAllIapsL(aIapList, + aIgnoreReadOnlyFlag, + rv) ); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("SetAllIapsL caused a leave: %d", err); + rv = EGeneralError; + } + else + if(MIptvServiceManagementClientObserver::ESucceeded != rv) + { + VCXLOGLO2("SetAllIapsL response error: %d", rv); + rv = EGeneralError; + } + } + + iSyncReturnValue = rv; + } + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallSetConnectionAllowed"); + + TInt err = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< iapName; + CIptvNetworkSelection::TRespStatus status = CIptvNetworkSelection::ESucceeded; + + + VCXLOGLO1("Sync service request"); + + if(iRequestRepeatCount <= 0) iRequestRepeatCount = 1; + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->SetConnectionAllowedL(aConnectionAllowed, aIapId, status) ); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("SetConnectionAllowedL caused a leave: %d", err); + rv = EGeneralError; + } + else + if(CIptvNetworkSelection::ESucceeded != status) + { + VCXLOGLO2("SetConnectionAllowedL response error: %d", status); + rv = EGeneralError; + } + } + + iSyncReturnValue = rv; + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementSync::CallIsConnectionAllowed"); + + TInt err = KErrNone; + + err = PrepareForRequest(); + if(err != KErrNone) + { + VCXLOGLO1("<< iapName; + CIptvNetworkSelection::TRespStatus status = CIptvNetworkSelection::ESucceeded; + + VCXLOGLO1("Sync service request"); + + if(iRequestRepeatCount <= 0) iRequestRepeatCount = 1; + + while(iRequestRepeatCount-- > 0) + { + TInt retryCount = 5; + + while(retryCount-- > 0) + { + TRAP(err, iIptvServiceManagementClient->IsConnectionAllowedL(aIapId, aPermission, status) ); + + if(err == KErrNotReady) + { + VCXLOGLO1("Server not ready, waiting a second before retry."); + iIptvTestTimer->After(1 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + else + { + break; // request succeeded or there's an error + } + } + + if(err != KErrNone) + { + VCXLOGLO2("IsConnectionAllowedL caused a leave: %d", err); + rv = EGeneralError; + } + else + if(CIptvNetworkSelection::ESucceeded != status) + { + VCXLOGLO2("IsConnectionAllowedL response error: %d", status); + rv = EGeneralError; + } + } + iSyncReturnValue = rv; + + FinishRequest(); + + VCXLOGLO1("<<>>CIptvServiceManagementApiTest::ResponseStatus"); + VCXLOGLO2("aStatus = %d", aStatus); + iSyncReturnValue = static_cast(aStatus); + VCXLOGLO1("<<>>CIptvServiceManagementSync::TimerComplete"); + VCXLOGLO2("aTimerId = %d", aTimerId); + VCXLOGLO2("aError = %d", aError); + + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + VCXLOGLO1("<<>>CIptvServiceManagementSync::AddServiceResp"); + //Callback ready + + ResponseStatus(aRespStatus); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + VCXLOGLO1("<<>>CIptvServiceManagementSync::UpdateServiceResp"); + //Callback ready + + ResponseStatus(aRespStatus); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + VCXLOGLO1("<<>>CIptvServiceManagementSync::DeleteServiceResp"); + //Callback ready + + ResponseStatus(aRespStatus); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + VCXLOGLO1("<<>>CIptvServiceManagementSync::GetServicesResp"); + +// check this + ResponseStatus(aRespStatus); + iServicesArray = aServicesArray; + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + VCXLOGLO1("<<>>CIptvServiceManagementSync::ServerShutdownResp"); + //Callback ready + ResponseStatus(aRespStatus); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + VCXLOGLO1("<<>>CIptvServiceManagementSync::GetUsedIapResp"); + //Callback ready + + VCXLOGLO2("aRespStatus = %d", aRespStatus); + VCXLOGLO2("aWlanWhenGPRS = %d", aWlanWhenGPRS); + TRespStatus respStatus = ESucceeded; + + if(CIptvNetworkSelection::ESucceeded != aRespStatus) + { + respStatus = EGeneralError; + iIapId = 0; + } + else + { + respStatus = ESucceeded; + iIapId = aIapId; + VCXLOGLO2("aIapId = %d",aIapId); + VCXLOGLO2("iapName = %S",&aIapName); + VCXLOGLO2("connectionPermission = %d",aConnectionPermission); + } + + ResponseStatus(respStatus); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + + VCXLOGLO1("<<(aSpecialAction); + break; + } + } + +// ----------------------------------------------------------------------------- +// CIptvServiceManagementSync::WaitForProvisioningEvents() +// ----------------------------------------------------------------------------- +// +void CIptvServiceManagementSync::WaitForProvisioningEvents() + { + VCXLOGLO1(">>>CIptvServiceManagementSync::WaitForProvisioningEvents"); + + iProvisioningWaitGoing = ETrue; + do + { + iProvisioningEventReceived = EFalse; + + iIptvTestTimer->CancelTimer(); + iIptvTestTimer->After(1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + } + while (iProvisioningEventReceived); + iProvisioningWaitGoing = EFalse; + + VCXLOGLO1("<<>>CIptvServiceManagementSync::SetExpectedSmEvent"); + iEventReceived = EFalse; + + if(iIgnoreEvents) + { + iWaitingForEvent = EFalse; + VCXLOGLO1("Not waiting event flag is set for next request."); + } + else + { + VCXLOGLO1("******************************************************************"); + switch(aEvent) + { + case CIptvSmEvent::EServiceAdded: + { + VCXLOGLO1("Event: EServiceAdded"); + break; + } + + case CIptvSmEvent::EServiceModified: + { + VCXLOGLO1("Event: EServiceModified"); + break; + } + + case CIptvSmEvent::EServiceDeleted: + { + VCXLOGLO1("Event: EServiceDeleted"); + break; + } + + case CIptvSmEvent::EServiceScheduleModified: + { + VCXLOGLO1("Event: EServiceScheduleModified"); + break; + } + + default: + VCXLOGLO2("Unexpected event: %d", aEvent); + break; + } + + if( iExpectedEventCount > 0 ) + { + VCXLOGLO3("Already expecting %d events, adding %d to count.", iExpectedEventCount, aEventCount); + iExpectedEventCount += aEventCount; + } + else + { + iExpectedEventCount = aEventCount; + } + VCXLOGLO2("Expected count: %d", iExpectedEventCount); + + iWaitingForEvent = ETrue; + iExpectedSmEvent = aEvent; + } + VCXLOGLO1("<<>>CIptvServiceManagementSync::HandleSmEvent"); + VCXLOGLO1("**********************************************************"); + VCXLOGLO2("CIptvServiceManagementSync:: iEvent: %d", aEvent.iEvent); + VCXLOGLO2("CIptvServiceManagementSync:: iServiceId: %d", aEvent.iServiceId); + + switch(aEvent.iEvent) + { + case CIptvSmEvent::EServiceAdded: + { + VCXLOGLO1("Event: EServiceAdded"); + } + break; + + case CIptvSmEvent::EServiceModified: + { + VCXLOGLO1("Event: EServiceModified"); + } + break; + + case CIptvSmEvent::EServiceDeleted: + { + VCXLOGLO1("Event: EServiceDeleted"); + } + break; + + case CIptvSmEvent::EServiceScheduleModified: + { + VCXLOGLO1("Event: EServiceScheduleModified"); + } + break; + + case CIptvSmEvent::EServiceSelectionModified: + { + VCXLOGLO1("Event: EServiceSelectionModified"); + } + break; + + default: + VCXLOGLO1("CIptvServiceManagementSync:: Unexpected event!"); + break; + } + + if(iProvisioningWaitGoing) + { + VCXLOGLO1("Wait for provisioning events going."); + iProvisioningEventReceived = ETrue; + VCXLOGLO1("<<ActiveWait(CIptvTestActiveWait::EActiveWaitStop); + if(iIptvTestTimer) + { + iIptvTestTimer->CancelTimer(); + } + + if(aEvent.iEvent != iExpectedSmEvent) + { + // We let modified event go for added event + if( !(iExpectedSmEvent == CIptvSmEvent::EServiceAdded && (aEvent.iEvent == CIptvSmEvent::EServiceModified + || aEvent.iEvent == CIptvSmEvent::EServiceSelectionModified) ) ) + { + VCXLOGLO2("* ERROR * Received an unexpected event, was waiting for %d. Leaving!", iExpectedSmEvent); + User::Leave(KErrUnknown); + } + else + { + VCXLOGLO1("Correct event received."); + } + } + + --iExpectedEventCount; + + if( iExpectedEventCount <= 0) + { + // stop the possible wait for event + iWaitingForEvent = EFalse; + } + } + else + { + VCXLOGLO1("* ERROR * Received an event when not waiting for one. Leaving!"); + User::Leave(KErrUnknown); + } + + VCXLOGLO1("<<>>CIptvServiceManagementSync::WaitForSmEvent"); + VCXLOGLO1("--------------------------------------------------"); + + if(!iWaitingForEvent) + { + if(!iEventReceived) + { + VCXLOGLO1("* ERROR * Not waiting for an event and no event received. Test code logic error."); + VCXLOGLO1("<<After(4 * 1000000); + iActiveWait->ActiveWait(CIptvTestActiveWait::EActiveWaitStart); + + if(!iEventReceived) + { + VCXLOGLO2("* ERROR * Did not receive expected event: %d", iExpectedSmEvent); + VCXLOGLO1("<<>>CIptvServiceManagementSync::PrepareForRequest"); + + if(iWaitNoEvents) + { + // special action set and we ignore all events for this request + iIgnoreEvents = ETrue; + iWaitNoEvents = EFalse; + } + else + { + // for default we check the events + iIgnoreEvents = EFalse; + } + + if(iRequestRepeatCount <= 0) iRequestRepeatCount = 1; + + TInt rv = KErrNone; + + VCXLOGLO1("<<>>CIptvServiceManagementSync::FinishRequest"); + + iIgnoreEvents = ETrue; + iWaitNoEvents = EFalse; + + iSpecialAction = EIptvSmNoSpecialAction; + + VCXLOGLO1("<<