--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsengine/mmsserversettings/src/mmsschedulesettingsutils.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,324 @@
+/*
+* Copyright (c) 2004-2007 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: mmsschedulesettingsutils implementation
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <centralrepository.h>
+#include <msvids.h>
+#include <msvschedulesettings.h>
+#include <msvoffpeaktime.h>
+#include <msvsenderroraction.h>
+#include <msvsysagentaction.h>
+
+// USERINCLUDE FILES
+#include "mmsschedulesettingsutils.h"
+#include "mmsdebuglogging.h"
+#include "MmsEnginePrivateCRKeys.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ============================== LOCAL FUNCTIONS ==============================
+
+// ============================== MEMBER FUNCTIONS =============================
+
+// -----------------------------------------------------------------------------
+// LoadScheduleSendSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadScheduleSendSettingsL(
+ CMsvScheduleSettings& aScheduleSettings,
+ CRepository& aRepository )
+ {
+ LOG(_L("TMmsScheduleSettingsUtils::LoadScheduleSendSettingsL"));
+
+ LoadScheduleSettingsL(
+ aScheduleSettings,
+ aRepository,
+ KMmsScheduleSendLongInterval,
+ KMmsScheduleSendShortInterval,
+ KMmsScheduleSendVariableIntervalsCount,
+ KMmsScheduleSendVariableIntervalArrayBase );
+
+ }
+
+// -----------------------------------------------------------------------------
+// LoadScheduleReceiveSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadScheduleReceiveSettingsL(
+ CMsvScheduleSettings& aScheduleSettings,
+ CRepository& aRepository )
+ {
+ LOG(_L("TMmsScheduleSettingsUtils::LoadScheduleReceiveSettingsL"));
+
+ LoadScheduleSettingsL(
+ aScheduleSettings,
+ aRepository,
+ KMmsScheduleRecvLongInterval,
+ KMmsScheduleRecvShortInterval,
+ KMmsScheduleRecvVariableIntervalsCount,
+ KMmsScheduleRecvVariableIntervalArrayBase );
+
+ }
+
+// -----------------------------------------------------------------------------
+// LoadScheduleSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadScheduleSettingsL(
+ CMsvScheduleSettings& aScheduleSettings,
+ CRepository& aRepository,
+ const TUint32 aLongInterval,
+ const TUint32 aShortInterval,
+ const TUint32 aVariableIntervalsCount,
+ const TUint32 aVariableIntervalArrayBase )
+ {
+ aScheduleSettings.Reset();
+
+ TInt temp = 0;
+ User::LeaveIfError( aRepository.Get( KMmsSchedulePriority, temp ) );
+ aScheduleSettings.SetPriority( temp );
+
+ User::LeaveIfError( aRepository.Get( KMmsScheduleValidityPeriod, temp ) );
+ aScheduleSettings.SetValidityPeriod( static_cast<TTimeIntervalMinutes>( temp ) );
+
+ User::LeaveIfError( aRepository.Get( KMmsScheduleIntervalType, temp ) );
+ aScheduleSettings.SetIntervalType( static_cast<TIntervalType>( temp ) );
+
+ User::LeaveIfError( aRepository.Get( KMmsScheduleLatency, temp ) );
+ aScheduleSettings.SetLatency( static_cast<TTimeIntervalMicroSeconds32>( temp ) );
+
+ User::LeaveIfError( aRepository.Get( aLongInterval, temp ) );
+ aScheduleSettings.SetLongInterval( static_cast<TTimeIntervalSeconds>( temp ) );
+
+ User::LeaveIfError( aRepository.Get( aShortInterval, temp) );
+ aScheduleSettings.SetShortInterval( static_cast<TTimeIntervalSeconds>( temp ) );
+
+ User::LeaveIfError( aRepository.Get( KMmsSchedulePendingConditionsTimeout, temp ) );
+ aScheduleSettings.SetPendingConditionsTimeout(static_cast<TTimeIntervalMinutes>(temp));
+
+ User::LeaveIfError( aRepository.Get( aVariableIntervalsCount, temp ) );
+ TInt count = temp;
+
+ if( count > 0 )
+ {
+ TUint32 variableIntervalId = aVariableIntervalArrayBase;
+ CArrayFixFlat<TTimeIntervalSeconds>* intervals
+ = new(ELeave) CArrayFixFlat<TTimeIntervalSeconds>( count );
+ CleanupStack::PushL( intervals ); // ***
+ for( TInt cur = 0; cur < count; cur++ )
+ {
+ User::LeaveIfError(aRepository.Get(variableIntervalId, temp));
+ intervals->AppendL(static_cast<TTimeIntervalSeconds>(temp));
+ variableIntervalId++;
+ }
+
+ if( intervals->Count() > 0 )
+ {
+ aScheduleSettings.SetVariableIntervalsL( *intervals );
+ }
+ CleanupStack::PopAndDestroy( intervals );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// LoadOffPeakSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadOffPeakSettingsL(
+ CMsvOffPeakTimes& /*aOffPeakTimes*/,
+ CRepository& /*aRepository*/ )
+ {
+ // DOES NOTHING
+ }
+
+// -----------------------------------------------------------------------------
+// LoadSendErrorSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadSendErrorSettingsL(
+ CMsvSendErrorActions& aErrorActions,
+ CRepository& aRepository )
+ {
+ LOG(_L("TMmsScheduleSettingsUtils::LoadSendErrorSettingsL"));
+
+ LoadErrorSettingsL( aErrorActions,
+ aRepository,
+ KMmsScheduleSendErrorDefaultAction,
+ KMmsScheduleSendErrorActionsCount,
+ KMmsScheduleSendErrorActionsBase );
+
+ }
+
+// -----------------------------------------------------------------------------
+// LoadReceiveErrorSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadReceiveErrorSettingsL(
+ CMsvSendErrorActions& aErrorActions,
+ CRepository& aRepository )
+ {
+ LOG(_L("TMmsScheduleSettingsUtils::LoadReceiveErrorSettingsL"));
+
+ LoadErrorSettingsL( aErrorActions,
+ aRepository,
+ KMmsScheduleRecvErrorDefaultAction,
+ KMmsScheduleRecvErrorActionsCount,
+ KMmsScheduleRecvErrorActionsBase );
+
+ }
+
+// -----------------------------------------------------------------------------
+// LoadErrorSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadErrorSettingsL(
+ CMsvSendErrorActions& aErrorActions,
+ CRepository& aRepository,
+ const TUint32 aDefaultErrorActionId,
+ const TUint32 aErrorActionCount,
+ const TUint32 aErrorActionBase )
+ {
+ TMsvSendErrorAction action;
+ LoadErrorActionL( aDefaultErrorActionId, action, aRepository );
+ aErrorActions.SetDefault( action );
+
+ LoadImmediateFailuresL( aErrorActions, aRepository );
+
+ TInt temp = 0;
+ User::LeaveIfError( aRepository.Get( aErrorActionCount, temp ) );
+ TInt count = temp;
+
+ TUint32 errorActionId = aErrorActionBase;
+ LOG2(_L("- loading %d error actions"), count);
+ for( TInt counter = 0; counter < count; counter++ )
+ {
+ LoadErrorActionL( errorActionId, action, aRepository );
+ aErrorActions.AddSendErrorActionL( action );
+ errorActionId += KMmsErrorActionElementIncrement;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// LoadSysAgentSettingsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadSysAgentSettingsL(
+ CMsvSysAgentActions& /*aSysAgentActions*/,
+ CRepository& /*aRepository*/ )
+ {
+ // DOES NOTHING
+ }
+
+
+// -----------------------------------------------------------------------------
+// LoadErrorActionL
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadErrorActionL(
+ TUint32 aErrorActionId,
+ TMsvSendErrorAction& aErrorAction,
+ CRepository& aRepository )
+ {
+ aErrorAction.Reset();
+
+ TInt temp = 0;
+ TUint32 settingId = aErrorActionId + KMmsErrorActionError;
+ User::LeaveIfError( aRepository.Get( settingId, temp ) );
+ aErrorAction.iError = temp;
+
+ settingId = aErrorActionId + KMmsErrorActionMaxRetries;
+ User::LeaveIfError( aRepository.Get(settingId, temp ) );
+ aErrorAction.SetMaxRetries( static_cast<TInt16>( temp ) );
+
+ settingId = aErrorActionId + KMmsErrorActionRetries;
+ User::LeaveIfError( aRepository.Get( settingId, temp ) );
+ aErrorAction.iRetries = static_cast<TMsvSendRetries>( temp );
+
+ settingId = aErrorActionId + KMmsErrorActionAction;
+ User::LeaveIfError( aRepository.Get( settingId, temp ) );
+ aErrorAction.iAction = static_cast<TMsvSendAction>( temp );
+
+ settingId = aErrorActionId + KMmsErrorActionRetrySpacing;
+ User::LeaveIfError( aRepository.Get( settingId, temp ) );
+ aErrorAction.iRetrySpacing = static_cast<TMsvSendRetrySpacing>( temp );
+
+ LOG2(_L("- load error action for error value %d"), aErrorAction.iError );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMmsScheduleSettingsUtils::LoadImmediateFailuresL(
+ CMsvSendErrorActions& aErrorActions,
+ CRepository& aRepository )
+ {
+
+ TInt temp = 0;
+ TMsvSendErrorAction action;
+
+ // Immediate failure actions
+ action.iAction = ESendActionFail;
+ action.iError = KErrNotFound;
+ action.SetMaxRetries( 0 );
+ action.iRetries = ESendRetriesFixed;
+ action.iRetrySpacing = ESendRetrySpacingStatic;
+
+ TInt count = 0;
+ User::LeaveIfError( aRepository.Get( KMmsImmediateFailureErrorCount, temp ) );
+ count = temp;
+
+ TInt i = 0;
+ LOG2(_L("- loading %d immediate failures error"), count);
+ for (i = 0; i < count; i++ )
+ {
+ User::LeaveIfError( aRepository.Get( KMmsImmediateFailureErrorBase + i, temp ) );
+ action.iError = temp;
+ aErrorActions.AddSendErrorActionL( action );
+ }
+
+ }
+
+
+// =========================== OTHER EXPORTED FUNCTIONS ========================
+
+// End of File