williamr@2: // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __MSVSENDERRORACTION_H__ williamr@2: #define __MSVSENDERRORACTION_H__ williamr@2: williamr@2: williamr@2: williamr@2: williamr@4: // williamr@2: // williamr@2: // Includes williamr@2: // williamr@4: // williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@4: // williamr@2: // williamr@2: // Constants williamr@2: // williamr@4: // williamr@2: williamr@2: williamr@4: // williamr@2: // williamr@2: // TMsvSendErrorAction Declaration williamr@2: // williamr@4: // williamr@2: williamr@2: /** williamr@2: Encapsulates the action to take for a particular error. williamr@2: williamr@2: An error may occur when the Server MTM is attempting to send a message or williamr@2: messages. If the Server MTM supports scheduling, then, depending on the error williamr@2: or conditions, the Server MTM may want to re-schedule the message on the Task williamr@2: Scheduler to send at a later time. CMsvScheduleSend::ReScheduleL() williamr@2: (in combination with CMsvSendErrorActions) uses the TMsvSendErrorAction williamr@2: to determine whether to re-schedule the message. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: class TMsvSendErrorAction williamr@2: { williamr@2: public: williamr@2: IMPORT_C TMsvSendErrorAction(); williamr@2: williamr@2: IMPORT_C void Reset(); williamr@2: williamr@2: IMPORT_C void SetMaxRetries(const TInt16 aMaxRetries); williamr@2: IMPORT_C TInt16 MaxRetries() const; williamr@2: williamr@2: /** The error. */ williamr@2: TInt iError; williamr@2: williamr@2: /** The action to take if this error occurs. */ williamr@2: TMsvSendAction iAction; williamr@2: williamr@2: /** The number of attempts to make at sending a message if this error occurs. williamr@2: williamr@2: If iRetries equals ESendRetriesInfinite, then sending will be attempted until williamr@2: successful (or the user intervenes). This member is ignored if iAction equals williamr@2: ESendActionFail. */ williamr@2: TMsvSendRetries iRetries; williamr@2: williamr@2: /** Retry behaviour. williamr@2: williamr@2: This member is used by CMsvSendErrorActions to determine when to resend the williamr@2: message. This member is ignored if iAction equals ESendActionFail. */ williamr@2: TMsvSendRetrySpacing iRetrySpacing; williamr@2: williamr@2: private: williamr@2: TInt16 iMaxRetries; williamr@2: }; williamr@2: williamr@2: williamr@4: // williamr@2: // williamr@2: // CMsvSendErrorActions williamr@2: // williamr@4: // williamr@2: williamr@2: /** williamr@2: This class determines what action to take if an error occurs while the Server williamr@2: MTM is sending a message (or messages). williamr@2: williamr@2: It encapsulates an array of TMsvSendErrorAction objects, which it uses to williamr@2: determine the action to take for a particular error. If the error is not williamr@2: found in the array, then CMsvSendErrorActions uses its default williamr@2: TMsvSendErrorAction object. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: class CMsvSendErrorActions : public CBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CMsvSendErrorActions* NewL(); williamr@2: IMPORT_C static CMsvSendErrorActions* NewLC(); williamr@2: IMPORT_C ~CMsvSendErrorActions(); williamr@2: williamr@2: IMPORT_C void AddSendErrorActionL(const TMsvSendErrorAction& aErrorAction); williamr@2: IMPORT_C TInt RemoveSendErrorAction(const TInt aError); williamr@2: IMPORT_C TInt GetSendErrorAction(const TInt aError, TMsvSendErrorAction& aErrorAction) const; williamr@2: williamr@2: IMPORT_C void Reset(); williamr@2: williamr@2: IMPORT_C void RestoreFromResourceL(TResourceReader& aReader); williamr@2: williamr@2: IMPORT_C void SetErrorsL(const CArrayFixFlat& aErrors); williamr@2: IMPORT_C const CArrayFixFlat& Errors() const; williamr@2: williamr@2: IMPORT_C const TMsvSendErrorAction& Default() const; williamr@2: IMPORT_C void SetDefault(const TMsvSendErrorAction& aAction); williamr@2: williamr@2: private: williamr@2: CMsvSendErrorActions(); williamr@2: void ConstructL(); williamr@2: void RestoreErrorActionL(TResourceReader& aReader, TInt aActionCount, const TBool aDefault); williamr@2: williamr@2: williamr@2: TInt Find(const TInt aError, TInt& aIndex) const; williamr@2: williamr@2: williamr@2: CArrayFixFlat* iErrors; williamr@2: TMsvSendErrorAction iDefault; williamr@2: }; williamr@2: williamr@2: #endif // __MSVSENDERRORACTION_H__