diff -r 000000000000 -r 72b543305e3a mmsengine/mmsserversettings/src/mmsschedulesettingsutils.cpp --- /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 +#include +#include +#include +#include +#include + +// 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( temp ) ); + + User::LeaveIfError( aRepository.Get( KMmsScheduleIntervalType, temp ) ); + aScheduleSettings.SetIntervalType( static_cast( temp ) ); + + User::LeaveIfError( aRepository.Get( KMmsScheduleLatency, temp ) ); + aScheduleSettings.SetLatency( static_cast( temp ) ); + + User::LeaveIfError( aRepository.Get( aLongInterval, temp ) ); + aScheduleSettings.SetLongInterval( static_cast( temp ) ); + + User::LeaveIfError( aRepository.Get( aShortInterval, temp) ); + aScheduleSettings.SetShortInterval( static_cast( temp ) ); + + User::LeaveIfError( aRepository.Get( KMmsSchedulePendingConditionsTimeout, temp ) ); + aScheduleSettings.SetPendingConditionsTimeout(static_cast(temp)); + + User::LeaveIfError( aRepository.Get( aVariableIntervalsCount, temp ) ); + TInt count = temp; + + if( count > 0 ) + { + TUint32 variableIntervalId = aVariableIntervalArrayBase; + CArrayFixFlat* intervals + = new(ELeave) CArrayFixFlat( count ); + CleanupStack::PushL( intervals ); // *** + for( TInt cur = 0; cur < count; cur++ ) + { + User::LeaveIfError(aRepository.Get(variableIntervalId, temp)); + intervals->AppendL(static_cast(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( temp ) ); + + settingId = aErrorActionId + KMmsErrorActionRetries; + User::LeaveIfError( aRepository.Get( settingId, temp ) ); + aErrorAction.iRetries = static_cast( temp ); + + settingId = aErrorActionId + KMmsErrorActionAction; + User::LeaveIfError( aRepository.Get( settingId, temp ) ); + aErrorAction.iAction = static_cast( temp ); + + settingId = aErrorActionId + KMmsErrorActionRetrySpacing; + User::LeaveIfError( aRepository.Get( settingId, temp ) ); + aErrorAction.iRetrySpacing = static_cast( 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