videofeeds/server/tsrc/VCXServiceManagementApiTest/inc/CIptvServiceManagementSync.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/server/tsrc/VCXServiceManagementApiTest/inc/CIptvServiceManagementSync.h Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,450 @@
+/*
+* Copyright (c) 2002-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: header file for CIptvServiceManagementSync class*
+*/
+
+
+
+
+#ifndef __CIPTVSERVICEMANAGEMENTSYNC_H__
+#define __CIPTVSERVICEMANAGEMENTSYNC_H__
+
+// INCLUDE FILES
+#include <e32base.h>
+#include "MIptvServiceManagementClientObserver.h"
+#include "CIptvServiceManagementClient.h"
+#include "CIptvService.h"
+#include "MIptvTestTimerObserver.h"
+#include <badesca.h>
+#include <f32file.h>
+#include <S32FILE.H>
+
+// DATA TYPES
+typedef MIptvServiceManagementClientObserver::TRespStatus TRespStatus;
+
+// FORWARD DECLARATIONS
+class CIptvServiceManagementClient;
+class CIptvTestTimer;
+class CIptvTestUtilities;
+class CIptvTestActiveWait;
+class CIptvSmEvent;
+
+// CLASS DECLARATION
+class CIptvServiceManagementSync : public CBase, public MIptvServiceManagementClientObserver, public MIptvTestTimerObserver
+ {
+ public: //enums
+
+ /**
+ * TIptvSmTestConnection
+ */
+ enum TIptvSmTestConnection
+ {
+ EIptvSmTestSync,
+ EIptvSmTestAsync
+ } ;
+ /**
+ * TIptvSmSpecialAction
+ */
+ enum TIptvSmSpecialAction
+ {
+ EIptvSmNoSpecialAction,
+ EIptvSmCancelNextAsyncRequest,
+ EIptvSmWaitNoEvents
+ };
+
+ public: // Constructors and destructors
+ /**
+ * NewL.
+ * Two-phased constructor.
+ * Creates a CIptvServiceManagementSync object using two phase construction,
+ * and return a pointer to the created object.
+ * @param aClient pointer to client, no ownership is transferred.
+ * @return A pointer to the created instance of CIptvServiceManagementSync.
+ */
+ static CIptvServiceManagementSync* NewL();
+
+ /**
+ * ~CIptvServiceManagementSync.
+ * Destructor.
+ * Destroys the object and releases all memory objects.
+ */
+ virtual ~CIptvServiceManagementSync();
+
+ public: // New functions
+
+ /**
+ * Adds service to service database using CIptvServiceManagementClient method AddServiceReqL or AddServiceL.
+ * @param aConn Async/sync call.
+ * @param aService Service data which is added to database.
+ * @return Response status.
+ */
+ TRespStatus CallAddService(TIptvSmTestConnection aConn, CIptvService& aService);
+
+ /**
+ * Updates existing service in service database using CIptvServiceManagementClient method UpdateServiceReqL or UpdateServiceL.
+ * @param aConn Async/sync call.
+ * @param aService Updated service data.
+ * @param aExpectedEvent Expected event, this usually is CIptvSmEvent::EServiceModified.
+ * @return Response status.
+ */
+ TRespStatus CallUpdateService(TIptvSmTestConnection aConn, CIptvService& aService, CIptvSmEvent::TEvent aExpectedEvent);
+
+ /**
+ * Gets services by id from service database using CIptvServiceManagementClient method
+ * GetServicesReqL or GetServicesL.
+ * @param aConn Async/sync call.
+ * @param aStartId
+ * @param aEndId
+ * @param aServicesArray Returned serviecs are stored here
+ * @return Response status.
+ */
+ TRespStatus CallGetServices(
+ TIptvSmTestConnection aConn,
+ TUint32 aStartId,
+ TUint32 aEndId,
+ CDesC8ArraySeg** aServicesArray
+ );
+
+ /**
+ * Gets services by provider id from service database by calling method CIptvServiceManagementClient::GetServicesL.
+ * @param aProviderId
+ * @param aServices Returned serviecs are stored here
+ * @return Response status.
+ */
+ TRespStatus CallGetServicesByProviderId(
+ TDesC& aProviderId,
+ CIptvServices& aServices
+ );
+
+ /**
+ * Gets filtered services from service database using CIptvServiceManagementClient method GetServicesReqL or
+ * GetServicesL.
+ * @param aSearchLimitFlags
+ * @param aOrder
+ * @param aConn Async/sync call.
+ * @param aServicesArray Returned serviecs are stored here.
+ * @return Response status.
+ */
+ TRespStatus CallGetServicesFiltered(
+ TUint32 aSearchLimitFlags,
+ CIptvServiceManagementClient::TOrder aOrder,
+ TIptvSmTestConnection aConn,
+ CDesC8ArraySeg** aServicesArray
+ );
+
+ /**
+ * Deletes a service from service database using CIptvServiceManagementClient method DeleteServiceReqL or
+ * DeleteServiceL.
+ * @param aConn Async/sync call.
+ * @param aId Id of service to be deleted.
+ * @return Response status.
+ */
+ TRespStatus CallDeleteService(TIptvSmTestConnection aConn, TUint32 aId);
+
+ /**
+ * Functionality disabled in CIptvServiceManagementClient.
+ * Requests IPTV server to shutdown itself. Request is asynchronous.
+ * @param aConn Async/sync call.
+ * @return Response status.
+ */
+ TRespStatus CallShutdownServer(TIptvSmTestConnection aConn );
+
+ /**
+ * Sets the used IAP for a service using CIptvServiceManagementClient method SetUsedIapL.
+ * @param aIapId
+ * @param aServiceId
+ * @param aSetToDefaultForService
+ * @return Response status.
+ */
+ TRespStatus CallSetUsedIap(TUint32 aIapId,
+ TUint32 aServiceId,
+ TBool aSetToDefaultForService
+ );
+ /**
+ * Gets the used IAP for a service using CIptvServiceManagementClient method GetUsedIapL or GetUsedIapReqL.
+ * @param aConn Async/sync call.
+ * @param aServiceId
+ * @param aIapId
+ * @return Response status.
+ */
+ TRespStatus CallGetUsedIap(
+ TIptvSmTestConnection aConn,
+ TUint32 aServiceId,
+ TUint32& aIapId
+ );
+
+ /**
+ * Clears the used IAP for a service using CIptvServiceManagementClient method ClearUsedIap.
+ * @return Response status.
+ */
+ TRespStatus CallClearUsedIap();
+
+ /**
+ * Sets IAP list to all services using CIptvServiceManagementClient method SetAllIapsReqL or SetAllIapsL.
+ * @param aConn Async/sync call.
+ * @param aIapList
+ * @param aIgnoreReadOnlyFlag
+ * @return Response status.
+ */
+ TRespStatus CIptvServiceManagementSync::CallSetAllIaps(
+ TIptvSmTestConnection aConn,
+ CIptvIapList& aIapList,
+ TBool aIgnoreReadOnlyFlag
+ );
+
+ /**
+ * Sets connection allowed flag for service using CIptvServiceManagementClient method SetConnectionAllowedL.
+ * @param aConnectionAllowed
+ * @param aIapId
+ * @return Response status.
+ */
+ TRespStatus CallSetConnectionAllowed(TBool aConnectionAllowed,
+ TUint32 aIapId);
+
+ /**
+ * Gets the connection allowed flag for service using CIptvServiceManagementClient method IsConnectionAllowedL.
+ * @param aPermission
+ * @param aIapId
+ * @return Response status.
+ */
+ TRespStatus CallIsConnectionAllowed(CIptvNetworkSelection::TConnectionPermission &aPermission,
+ TUint32 aIapId);
+
+
+
+ /**
+ * Cancels the outstanding request.
+ */
+ void CancelRequest() ;
+
+ /**
+ * Sets the repeat count for next request. Async requests will be sent w/o waiting the request to complete
+ * @param aCount
+ */
+ void RepeatNextRequest(TInt aRequestRepeatCount);
+
+ /**
+ * Gets the count of repeats for next request.
+ * @return Count of repeats.
+ */
+ TUint GetRepeatNextRequestCount();
+
+ /**
+ * Sets the member variables which point to the database locations.
+ * @param aServicesDbFile
+ * @param aPasswordsDbFile
+ */
+ void SetDbFileLocations(TDesC& aServicesDbFile, TDesC& aPasswordsDbFile);
+
+ /**
+ * Sets special action.
+ * @param aSpecialAction
+ */
+ void SetSpecialAction(TInt aSpecialAction);
+
+ /**
+ * Waits for a second for SM events and if event is received starts the wait again.
+ */
+ void WaitForProvisioningEvents();
+
+ /**
+ * Gets the instance of CIptvServiceManagementClient. Ownership doesn't transfer.
+ * @return Pointer to instance of iIptvServiceManagementClient.
+ */
+ CIptvServiceManagementClient* GetSmClient() { return iIptvServiceManagementClient; }
+
+ protected: // Functions from base classes
+
+
+ public: // Functions from base classes
+
+ /**
+ * From MIptvTestTimerObserver. Asynchronous callback observer function signaling application that timer has elapsed.
+ * @since
+ * @param error Error code.
+ */
+ virtual void TimerComplete(TInt aTimerId, TInt aError);
+
+ /*
+ * From MIptvServiceManagementClientObserver. Callback function for AddServiceReq operation.
+ * @param aRespStatus
+ */
+ void AddServiceResp(TRespStatus aRespStatus);
+
+ /**
+ * From MIptvServiceManagementClientObserver. Callback function for UpdateServiceReq.
+ * @param aRespStatus
+ */
+ void UpdateServiceResp(TRespStatus aRespStatus);
+
+ /**
+ * From MIptvServiceManagementClientObserver. Callback function for DeleteServiceReq operation.
+ * @param aRespStatus
+ */
+ void DeleteServiceResp(TRespStatus aRespStatus);
+
+ /**
+ * From MIptvServiceManagementClientObserver. Callback function for GetServiceReq operation.
+ * aServicesArray ownership moves from dll to application, ie application
+ * is responsible for freeing the array.
+ * Array elements are binary descriptors built with CIptvService::GetL() method.
+ * CIptvService::Set() method can be used to init CIptvService class with
+ * array element data.
+ * @param aRespStatus
+ * @param aServicesArray contains array of pointers to descriptors.
+ */
+ void GetServicesResp(TRespStatus aRespStatus,
+ CDesC8ArraySeg* aServicesArray);
+
+ /**
+ * From MIptvServiceManagementClientObserver. Callback function for ShutdownServerReq operation.
+ * @param aRespStatus
+ */
+ void ServerShutdownResp(TRespStatus aRespStatus);
+
+ /**
+ * From MIptvServiceManagementClientObserver. Callback function for GetUsedIapReq() method.
+ * @param aRespStatus
+ * @param aIapId IAP ID which client should use.
+ * In case of error, aIapId is 0.
+ */
+ void GetUsedIapResp(TUint32 aIapId,
+ const TDesC& aIapName,
+ CIptvNetworkSelection::TConnectionPermission aConnectionPermission,
+ TBool aWlanWhenGPRS,
+ CIptvNetworkSelection::TRespStatus aRespStatus);
+
+ /**
+ * From MIptvServiceManagementClientObserver. Callback for Service Manager generated events.
+ * @param aEvent
+ */
+ void HandleSmEvent(CIptvSmEvent& aEvent);
+
+ /**
+ * Increases the expected event count.
+ */
+ void IncreaseExpectedEventCount( TInt aAmount );
+
+
+ private:
+ /**
+ * CIptvServiceManagementSync.
+ * Default C++ constructor.
+ * @param
+ */
+ CIptvServiceManagementSync();
+
+ /**
+ * ConstructL.
+ * Performs the second phase construction of a
+ * CIptvRequestHandler object.
+ */
+ void ConstructL();
+
+ /**
+ * Sets iSyncReturnValue member variable.
+ */
+ TInt ResponseStatus(TUint8 aStatus);
+
+ /**
+ * Prepares for a request. Special actions set etc.
+ */
+ TInt PrepareForRequest();
+
+ /**
+ * Finishes request.
+ */
+ TInt FinishRequest();
+
+ /**
+ * Sets the expected event from CIptvServiceManagementClient.
+ */
+ void SetExpectedSmEvent(CIptvSmEvent::TEvent aEvent, TInt aEventCount);
+
+ /**
+ * Starts waiting asynchronously for next event from CIptvServiceManagementClient.
+ */
+ TInt WaitForSmEvent();
+
+ private: // Data
+
+ // Instance of CIptvTestActiveWait
+ CIptvTestActiveWait* iActiveWait;
+
+ // iSyncReturnValue Return value of synchronous request function.
+ MIptvServiceManagementClientObserver::TRespStatus iSyncReturnValue;
+
+ // Services from async GetService requests response are stored here.
+ CDesC8ArraySeg* iServicesArray;
+
+ // Instance of CIptvServiceManagementClient
+ CIptvServiceManagementClient* iIptvServiceManagementClient;
+
+ // Iap ID from async GetUsedIap request response is stored here.
+ TUint32 iIapId;
+
+ // How many times next request is repeated.
+ TInt iRequestRepeatCount;
+
+ // The *special* action
+ TIptvSmSpecialAction iSpecialAction;
+
+ // Instance of CIptvTestTimer
+ CIptvTestTimer* iIptvTestTimer;
+
+ // Instance of CIptvTestUtilities
+ CIptvTestUtilities* iIptvTestUtilities;
+
+ /*
+ ->PrepareForRequest sets IgnoreEvents OFF if WaitNoEvents is not set
+ ->WaitingForEvent is SET
+ ->Expected event is SET
+ ->Request is made
+ ->WaitForSmEvent is called, wait 6 seconds
+ ->HandleSmEvent callback is called when events are received
+ -> events are checked if ignoring is OFF
+ ->FinishRequest sets IgnoreEvents ON
+ */
+
+ // Ignore is set always when there's no request made by this class
+ TBool iIgnoreEvents;
+
+ // Set when updating other service field than address because only that causes modify event
+ TBool iWaitNoEvents;
+
+ // Set when waiting for an event.
+ TBool iWaitingForEvent;
+
+ // Set when event is received.
+ TBool iEventReceived;
+
+ // The expected event.
+ CIptvSmEvent::TEvent iExpectedSmEvent;
+
+ TInt iExpectedEventCount;
+
+ // The expected events.
+ RArray<CIptvSmEvent::TEvent> iExpectedSmEvents;
+
+ // Are we currently waiting for provisioining to finish
+ TBool iProvisioningWaitGoing;
+
+ // Is provisioning event received.
+ TBool iProvisioningEventReceived;
+ };
+
+
+#endif //__CIptvServiceManagementSync_H__
+
+// End of File
\ No newline at end of file