diff -r 000000000000 -r 8e480a14352b messagingfw/scheduledsendmtm/schedulesendmtm/src/MsvScheduleSettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/scheduledsendmtm/schedulesendmtm/src/MsvScheduleSettings.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,347 @@ +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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 +#include +#include +#include +#include + +/** +Allocates and creates a new CMsvScheduleSettings object. + +@return New object +*/ +EXPORT_C CMsvScheduleSettings* CMsvScheduleSettings::NewL() + { + CMsvScheduleSettings* self = CMsvScheduleSettings::NewLC(); + CleanupStack::Pop(self); + return self; + } + +/** +Allocates and creates a new CMsvScheduleSettings object. + +@return New object +*/ +EXPORT_C CMsvScheduleSettings* CMsvScheduleSettings::NewLC() + { + CMsvScheduleSettings* self = new (ELeave) CMsvScheduleSettings(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CMsvScheduleSettings::ConstructL() + { + iVariableIntervals = new (ELeave) CArrayFixFlat(1); + } + +/* + Sets all the members to their default value. +*/ +CMsvScheduleSettings::CMsvScheduleSettings() + { + Reset(); + } + +/** +Destructor. +*/ +EXPORT_C CMsvScheduleSettings::~CMsvScheduleSettings() + { + delete iVariableIntervals; + } + +/** +Resets the object. + +This sets all data members to their default values. +*/ +EXPORT_C void CMsvScheduleSettings::Reset() + { + iPriority = EDefaultPriority; + iValidityPeriod = EDefaultValidityPeriod; + iIntervalType = (TIntervalType) EDefaultIntervalType; + + iShortInterval = EDefaultShortInterval; + iLongInterval = EDefaultLongInterval; + + iLatency = EDefaultLatency; + iPendingConditionsTimeout = EDefaultPendingConditionsTimeout; + + if (iVariableIntervals) + iVariableIntervals->Reset(); + } + + +/** +Gets the priority of the messages on the Task Scheduler. + +@return Priority value +*/ + +EXPORT_C TInt CMsvScheduleSettings::Priority() const + { + return iPriority; + } + +/** +Sets the priority of the messages on the Task Scheduler. + +@param aPriority +Priority value. +*/ + +EXPORT_C void CMsvScheduleSettings::SetPriority(const TInt aPriority) + { + iPriority = aPriority; + } + +/** +Gets the time period for which the messages are valid on the Task Scheduler. + +@return Validity period +*/ +EXPORT_C const TTimeIntervalMinutes& CMsvScheduleSettings::ValidityPeriod() const + { + return iValidityPeriod; + } + +/** +Sets the time period for which the messages are valid on the Task Scheduler. + +This is ignored if a message has to be sent off-peak. + +@param aValidityPeriod +Validity period. + +@panic ScheduleSend-DLL 10 +The validity period is invalid (negative or null). +*/ +EXPORT_C void CMsvScheduleSettings::SetValidityPeriod(const TTimeIntervalMinutes& aValidityPeriod) + { + __ASSERT_ALWAYS(aValidityPeriod.Int() > 0, gPanic(EInvalidValidityPeriod)); + + iValidityPeriod = aValidityPeriod; + } + +/** +Gets the schedule interval type. + +@return The schedule interval type +*/ + +EXPORT_C TIntervalType CMsvScheduleSettings::IntervalType() const + { + return iIntervalType; + } + +/** +Sets the schedule interval type. + +@param aIntervalType +The schedule interval type. +*/ +EXPORT_C void CMsvScheduleSettings::SetIntervalType(const TIntervalType aIntervalType) + { + iIntervalType = aIntervalType; + } + +/** +Sets the long retry interval value. + +This is used by CMsvScheduleSend to determine when to next send the message, +if the TMsvSendErrorAction::iAction equals ESendActionRetryLater and +TMsvSendErrorAction::iRetrySpacing equals ESendRetriesFixed. + +@param aInterval +Long interval value. + +@panic ScheduleSend-DLL 18 +The long interval is out of range (negative or null). +*/ +EXPORT_C void CMsvScheduleSettings::SetLongInterval(const TTimeIntervalSeconds& aInterval) + { + __ASSERT_ALWAYS(aInterval.Int() > 0, gPanic(ELongIntervalOutOfRange)); //TO DO: Always or Debug only? + + iLongInterval = aInterval; + } + +/** +Gets the long retry interval value. + +@return Long interval value + +@panic ScheduleSend-DLL 18 +The long interval is out of range (negative or null). +*/ +EXPORT_C const TTimeIntervalSeconds& CMsvScheduleSettings::LongInterval() const + { + __ASSERT_ALWAYS(iLongInterval.Int() > 0, gPanic(ELongIntervalOutOfRange)); //TO DO: Always or Debug only? + + return iLongInterval; + } + +/** +Sets the short retry interval value. + +This is used by CMsvScheduleSend to determine when to next send the message, +if the TMsvSendErrorAction::iAction equals ESendActionRetryImmediately. + +@param aInterval +Short interval value. + +@panic ScheduleSend-DLL 19 +The short interval is out of range (negative or null). +*/ +EXPORT_C void CMsvScheduleSettings::SetShortInterval(const TTimeIntervalSeconds& aInterval) + { + __ASSERT_ALWAYS(aInterval.Int() > 0, gPanic(EShortIntervalOutOfRange)); //TO DO: Always or Debug only? + + iShortInterval = aInterval; + } + +/** +Gets the short retry interval value. + +@return Short interval value + +@panic ScheduleSend-DLL 19 +The short interval is out of range (negative or null). +*/ +EXPORT_C const TTimeIntervalSeconds& CMsvScheduleSettings::ShortInterval() const + { + __ASSERT_ALWAYS(iShortInterval.Int() > 0, gPanic(EShortIntervalOutOfRange)); //TO DO: Always or Debug only? + + return iShortInterval; + } + +/** +Sets variable retry intervals. + +@param aIntervals +Variable retry intervals. + +@leave One of the system wide error codes +One of the intervals could not be appended to the array holding the variable +intervals. + +@panic ScheduleSend-DLL 20 +At least one of the intervals is out of range (negative or null). +*/ +EXPORT_C void CMsvScheduleSettings::SetVariableIntervalsL(const CArrayFixFlat& aIntervals) + { + iVariableIntervals->Reset(); + + TInt count = aIntervals.Count(); + + for (TInt curInt = 0; curInt < count; curInt++) + { + TTimeIntervalSeconds interval = aIntervals[curInt]; + + __ASSERT_ALWAYS(interval.Int() > 0, gPanic(EVariableIntervalOutOfRange)); //TO DO: Always or Debug only? + + iVariableIntervals->AppendL(interval); + } + } + +/** +Gets variable retry intervals. + +This is used by CMsvScheduleSend to determine when to next send the message. +It is only used if TMsvSendErrorAction::iAction equals ESendActionRetryLater +and TMsvSendErrorAction::iRetrySpacing equals ESendRetrySpacingVariable. + +@return Variable retry intervals +*/ +EXPORT_C const CArrayFixFlat& CMsvScheduleSettings::VariableIntervals() const + { + return *iVariableIntervals; + } + + +/** +Sets the minimum message sending latency. + +@param aLatency +Minimum message sending latency. + +@panic ScheduleSend-DLL 25 +The latency is invalid (negative). +*/ +EXPORT_C void CMsvScheduleSettings::SetLatency(const TTimeIntervalMicroSeconds32& aLatency) + { + __ASSERT_ALWAYS(aLatency.Int() >= 0, gPanic(ELatencyOutOfRange)); //TO DO: Always or Debug only? + + iLatency = aLatency; + } + +/** +Gets the minimum message sending latency. + +This is the minimum amount of time from the current time that must elapse +before the message is sent. This must be greater than or equal to zero. + +If the client specifies that the message should be scheduled in the past, +then CMsvScheduleSend will actually schedule the message in Latency() seconds +from the current time. + +@return Minimum message sending latency + +@panic ScheduleSend-DLL 25 +The latency is invalid (negative). +*/ +EXPORT_C const TTimeIntervalMicroSeconds32& CMsvScheduleSettings::Latency() const + { + __ASSERT_ALWAYS(iLatency.Int() >= 0, gPanic(ELatencyOutOfRange)); //TO DO: Always or Debug only? + + return iLatency; + } + +/** +Sets the timeout interval when re-scheduling messages for pending conditions +to be met. + +A value of zero indicates that there is no timeout when pending conditions to +be met. The default value is zero. + +@param aTimeout +The timeout interval in minutes. + +@panic ScheduleSend-DLL 25 +The timeout interval is invalid (negative). +*/ +EXPORT_C void CMsvScheduleSettings::SetPendingConditionsTimeout(const TTimeIntervalMinutes& aTimeout) + { + __ASSERT_ALWAYS(aTimeout.Int() >= 0, gPanic(EPendingConditionsTimeoutOutOfRange)); + + iPendingConditionsTimeout = aTimeout; + } + +/** +Gets the timeout interval when re-scheduling messages for pending conditions +to be met. + +A value of zero indicates that there is no timeout when pending conditions to +be met. The default value is zero. + +@return +The timeout interval in minutes. +*/ +EXPORT_C const TTimeIntervalMinutes& CMsvScheduleSettings::PendingConditionsTimeout() const + { + return iPendingConditionsTimeout; + }