videofeeds/server/tsrc/VCXServiceManagementApiTest/inc/CIptvServiceManagementSync.h
changeset 0 96612d01cf9f
--- /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