mmsengine/mmsserversettings/src/mmsschedulesettingsutils.cpp
changeset 0 72b543305e3a
child 23 238255e8b033
--- /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