videofeeds/server/IptvScheduledDownload/inc/iptvvodscheduleddownloadactivescheduler.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/server/IptvScheduledDownload/inc/iptvvodscheduleddownloadactivescheduler.h Wed Sep 01 12:30:28 2010 +0100
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) 2006 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: Scheduled download scheduler active object.*
+*/
+
+
+
+
+#ifndef CIPTVVODSCHEDULEDDOWNLOADACTIVESCHEDULER_H
+#define CIPTVVODSCHEDULEDDOWNLOADACTIVESCHEDULER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "CIptvUtil.h"
+#include "iptvvodscheduleddownloaddefinitions.h"
+
+// CONSTANTS
+
+// CLASS DECLARATION
+class CCseScheduledProgram;
+class CCseSchedulerApi;
+class CIptvVODScheduledDownloadScheduler;
+
+/**
+* Scheduled download scheduler. This class handles the calculating new
+* schedules to the CSE when settings have been changed.
+*
+* @lib IptvServer.exe
+* @since
+*/
+NONSHARABLE_CLASS ( CIptvVODScheduledDownloadActiveScheduler ):
+ public CTimer
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aScheduler The owning scheduler.
+ * @param aServiceId The service id.
+ * @param aNetworkCondition The network type to use when downloading.
+ * @param aDownloadTime The download time.
+ * @param aDownloadType The download type.
+ */
+ static CIptvVODScheduledDownloadActiveScheduler* NewL(
+ CIptvVODScheduledDownloadScheduler& aScheduler,
+ TIptvServiceId aServiceId,
+ TIptvVodScheduleConnectionCondition aNetworkCondition,
+ TIptvVodScheduleDownloadtimeCombination aDownloadTime,
+ TIptvVodScheduleDownloadTypeCombination aDownloadType );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CIptvVODScheduledDownloadActiveScheduler( );
+
+ public: // From CTimer
+
+ void RunL();
+
+ private: // New functions
+
+ /**
+ * Internal helper class representing one shcedule slot.
+ *
+ * @lib iptvuiengine.lib
+ * @since
+ */
+ class TScheduleSlot
+ {
+ public:
+ /**
+ * C++ constructor.
+ * @param aStartTime The start time of the slot.
+ * @param aEndTime The end time of the slot.
+ * @param aShouldHave Should the slot have a schedule.
+ */
+ TScheduleSlot(
+ const TTime& aStartTime,
+ const TTime& aEndTime,
+ TBool aShouldHave ) :
+ iStartTime( aStartTime), iEndTime( aEndTime ),
+ iShouldHaveSchedule( aShouldHave ),
+ iAlreadyHasSchedule( EFalse )
+ {
+ }
+
+ private:
+ TScheduleSlot() {}
+
+ public:
+ /**
+ * The start time of the slot.
+ */
+ TTime iStartTime;
+
+ /**
+ * The end time of the slot.
+ */
+ TTime iEndTime;
+
+ /**
+ * Should the slot have a schedule.
+ */
+ TBool iShouldHaveSchedule;
+
+ /**
+ * Does the slot have a schedule.
+ */
+ TBool iAlreadyHasSchedule;
+ };
+
+ /**
+ * Get existing schedules for this service and resechedule them.
+ */
+ void UpdateScheduleL();
+
+ /**
+ * Add new schedules and remove the found schedules if needed.
+ */
+ void ReScheduleL();
+
+ /**
+ * Create a list of time slots from now to KNumberOfDaysToSchedule
+ * days forward midnight.
+ *
+ * @param aScheduleSlots The scheduled download slots.
+ */
+ void BuildScheduleSlotsL(
+ RArray<TScheduleSlot>& aScheduleSlots ) const;
+
+ /**
+ * Get the application data from the scheduled download
+ * and return the service id from it.
+ *
+ * @return The service id.
+ */
+ TIptvServiceId GetServiceIdFromScheduledProgramL(
+ CCseScheduledProgram& aProgram ) const;
+
+ /**
+ * Create application data from the service id.
+ *
+ * @return The created applicatiuon data. Caller will delete the data.
+ */
+ HBufC8* WriteApplicationDataL() const;
+
+ /**
+ * Get the service id from the application data.
+ *
+ * @param aDataPtr The data to read from.
+ * @return The service id.
+ */
+ TIptvServiceId ReadApplicationDataL( TPtrC8 aDataPtr ) const;
+
+ /**
+ * Return randomized time which fits the given slot. Also take into
+ * account the current time.
+ *
+ * @param aSlot The time slot to randomize between.
+ * @return The randomized time.
+ */
+ TTime RandomizeRunTime( const TScheduleSlot& aSlot ) const;
+
+ private:
+
+ /**
+ * C++ constructor.
+ *
+ * @param aScheduler The owning scheduler.
+ * @param aServiceId The service id.
+ * @param aNetworkCondition The network type to use when downloading.
+ * @param aDownloadTime The download time.
+ * @param aDownloadType The download type.
+ */
+ CIptvVODScheduledDownloadActiveScheduler(
+ CIptvVODScheduledDownloadScheduler& aScheduler,
+ TIptvServiceId aServiceId,
+ TIptvVodScheduleConnectionCondition aNetworkCondition,
+ TIptvVodScheduleDownloadtimeCombination aDownloadTime,
+ TIptvVodScheduleDownloadTypeCombination aDownloadType );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private: // Data
+
+ /**
+ * The schedule how created us and has a pointer to us.
+ */
+ CIptvVODScheduledDownloadScheduler& iScheduler;
+
+ /**
+ * The service to use.
+ */
+ TIptvServiceId iServiceId;
+
+ /**
+ * The network condition.
+ */
+ TIptvVodScheduleConnectionCondition iNetworkCondition;
+
+ /**
+ * The download time.
+ */
+ TIptvVodScheduleDownloadtimeCombination iDownloadTime;
+
+ /**
+ * The download type.
+ */
+ TIptvVodScheduleDownloadTypeCombination iDownloadType;
+
+ /**
+ * Common Scheduling Engine API. Owned.
+ */
+ CCseSchedulerApi* iCse;
+
+ /**
+ * Temporary holding place for scheduled downloads. Owned.
+ */
+ RPointerArray<CCseScheduledProgram> iScheduledDownloads;
+ };
+
+#endif // CIPTVVODSCHEDULEDDOWNLOADACTIVESCHEDULER_H
+
+// End of File