--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/common/alertqueue/inc/NSmlAlertQueue.h Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,816 @@
+/*
+* Copyright (c) 2002-2005 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: SyncML alert parser and message handler.
+*
+*/
+
+
+#ifndef __NSMLALERTQUEUE_H__
+#define __NSMLALERTQUEUE_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <SyncMLDef.h>
+#include <SyncMLHistory.h>
+#include <SyncMLAlertInfo.h>
+#include <utf.h>
+
+#include <nsmlunicodeconverter.h>
+#include "nsmldssettings.h"
+#include "nsmldmsettings.h"
+#include "NSmlHistoryArray.h"
+
+#include "WBXMLSyncMLParser.h"
+#include "WBXMLParser.h"
+#include "WBXMLParserError.h"
+#include "smlmetinfdtd.h"
+#include "NSmlURI.h"
+#include "NSmlAlertQueueDefs.h"
+
+
+
+//container for profile related alert info
+class CNSmlAlertInfo : public CBase
+ {
+ public:
+ ~CNSmlAlertInfo();
+ TInt iProfileId;
+ TInt iMatchCount;
+ TInt iIAPId;
+ RPointerArray<TNSmlContentTypeInfo> iTaskInfo;
+ };
+
+//Base class for server alert parsers
+class CNSmlMessageParserBase : public CBase
+ {
+ public:
+
+ /**
+ * Constuctor
+ * CNSmlMessageParserBase( CSmlAlertInfo& aAlertInfo,
+ * CSyncMLHistoryPushMsg& aHistoryInfo )
+ * @param aAlertInfo - reference to CSmlAlertInfo : container for hold
+ * parsed data
+ * @param aHistoryInfo - reference to CSyncMLHistoryPushMsg : container
+ * for hold parsed data
+ * @return -
+ */
+ CNSmlMessageParserBase( CSmlAlertInfo& aAlertInfo,
+ CSyncMLHistoryPushMsg& aHistoryInfo );
+
+ /**
+ * Destructor
+ * ~CNSmlMessageParserBase()
+ * @param -
+ * @return -
+ */
+ virtual ~CNSmlMessageParserBase();
+
+ /**
+ * Pure virtual method to implement the parsing
+ * void ParseMessageL()
+ * @param -
+ * @return -
+ */
+ virtual void ParseMessageL() = 0;
+
+ /**
+ * Pure virtual method to target a correct profile
+ * void SearchProfileL(TDesC8& aServerUri)
+ * @param aServerUri - Server Id identifier
+ * @return -
+ */
+ virtual void SearchProfileL( TDesC8& aServerUri ) = 0;
+
+ /**
+ * Method to target correct content type
+ * void MatchContentTypeL( TDesC8& aPath )
+ * @param aPath - Path to local database
+ * @return -
+ */
+ virtual void MatchContentTypeL( TDesC8& /*aPath*/ ) { }
+
+ /**
+ * Returns a pointer to HBufC8 buffer
+ * TPtr8& Message()
+ * @param -
+ * @return - Reference to HBufC8 buffer
+ */
+ TPtr8& Message();
+
+ /**
+ * Allocates buffer of specified size
+ * void CreateBufferL( TInt aSize )
+ * @param aSize - size of buffer to hold the SAN message
+ * @return -
+ */
+ void CreateBufferL( TInt aSize );
+
+ /**
+ * Resolves the profile if more than one match is found
+ * void ResolveProfileL( TInt aContentCount )
+ * @param aContentCount - Number of alerted contents
+ * @return -
+ */
+ virtual void ResolveProfileL( TInt /*aContentCount*/ ) { }
+
+ /**
+ * Leaves with KErrCorrupt if message length < given position
+ * void CheckLengthL(TInt aPos);
+ * @param aPos - Position in message
+ * @return -
+ */
+ virtual void CheckLengthL( TInt aPos );
+
+ /**
+ * Creates a pointer of the message to heap
+ * TPtrC8 DoMessageCopy()
+ * @param -
+ * @return - Pointer to new message instance
+ */
+ TPtrC8 DoMessageCopyLC();
+
+ protected:
+ CSmlAlertInfo& iAlertInfo;
+ CSyncMLHistoryPushMsg& iHistoryInfo;
+ RPointerArray<CNSmlAlertInfo> iFoundProfiles;
+ private:
+ HBufC8* iMessage;
+ TPtr8 iMessagePtr;
+ };
+
+//Class for parsing DM server alert notification version 1.1
+class CNSmlDSAlertParser11 : public CNSmlMessageParserBase,
+ public MWBXMLSyncMLCallbacks
+ {
+ public:
+
+ /**
+ * Constuctor
+ * CNSmlDMAlertParser11( CSmlAlertInfo& aAlertInfo,
+ * CSyncMLHistoryPushMsg& aHistoryInfo )
+ * @param aAlertInfo - reference to CSmlAlertInfo : container for hold
+ * parsed data
+ * @param aHistoryInfo - reference to CSyncMLHistoryPushMsg : container
+ * for hold parsed data
+ * @return -
+ */
+ CNSmlDSAlertParser11( CSmlAlertInfo& aAlertInfo,
+ CSyncMLHistoryPushMsg& aHistoryInfo );
+
+ /**
+ * Destructor
+ * ~CNSmlDSAlertParser11();
+ * @param -
+ * @return -
+ */
+ virtual ~CNSmlDSAlertParser11();
+
+ /**
+ * Derived from base class. Implements the parsing.
+ * void ParseMessageL()
+ * @param -
+ * @return -
+ */
+ virtual void ParseMessageL();
+
+ /**
+ * Derived from base class. Targets the profile using server id.
+ * void SearchProfileL( TDesC8& aServerUri )
+ * @param aServerUri - Server Id.
+ * @return -
+ */
+ virtual void SearchProfileL( TDesC8& aServerUri );
+
+ /**
+ * Targets the profile using server id.
+ * TBool SearchProfileURIL( CNSmlURI& aUri )
+ * @param aServerUri - Server Id.
+ * @return - ETrue if profile is found
+ */
+ TBool SearchProfileURIL( CNSmlURI& aUri );
+
+
+ /**
+ * Converts data in Pcdata structure
+ * void PCDATAToUnicodeLC( const SmlPcdata_t& aPcdata,
+ * HBufC*& aUnicodeData ) const;
+ * @param aServerUri - Server Id.
+ * @return -
+ */
+ void PCDATAToUnicodeLC( const SmlPcdata_t& aPcdata,
+ HBufC*& aUnicodeData ) const;
+
+ /**
+ * Resolves the profile if more than one match is found
+ * void ResolveProfileL( TInt aContentCount )
+ * @param aContentCount - Number of alerted contents
+ * @return -
+ */
+ virtual void ResolveProfileL( TInt aContentCount );
+
+ /**
+ * Derived from base class. Targets content type with
+ * remote database path + MimeType.
+ * void MatchContentTypeL( TDesC8& aPath, TInt aContentType,
+ * TInt aSyncType )
+ * @param aPath - Database path.
+ * @param aContentType - Value of content type defined in SAN message
+ * @param aSyncType - Sync type defined in SAN message for the content
+ * @return -
+ */
+ void MatchContentTypeL( TDesC8& aPath, TDesC8& aContentType,
+ TSmlSyncType aSyncType, TInt aProfileIndex );
+
+ /**
+ * Targets content type with mime-type
+ * TBool ConvertContentTypeL( TDesC& aMimeType,
+ * const TInt aDataProviderId )
+ * @param aMimeType - Mime type of the data provider
+ * @param aDataProviderId - Implementation UID of the data provider
+ * @return - ETrue if content type is allowed
+ */
+ TBool ConvertContentTypeL( TDesC& aMimeType,
+ const TInt aDataProviderId );
+
+ private:
+
+ void TrimRightSpaceAndNull (TDes8& aDes ) const;
+
+ Ret_t smlAlertCmdFuncL( SmlAlertPtr_t aContent);
+ Ret_t smlGetCmdFuncL( SmlGetPtr_t aContent );
+ Ret_t smlPutCmdFuncL( SmlPutPtr_t aContent );
+ Ret_t smlResultsCmdFuncL( SmlResultsPtr_t aContent );
+ Ret_t smlStatusCmdFuncL( SmlStatusPtr_t aContent );
+ Ret_t smlStartMessageFuncL( SmlSyncHdrPtr_t aSyncHdr);
+ Ret_t smlEndMessageFuncL( Boolean_t final );
+ Ret_t smlStartSyncFuncL( SmlSyncPtr_t aContent );
+ Ret_t smlEndSyncFuncL();
+ Ret_t smlStartAtomicFuncL( SmlAtomicPtr_t aContent );
+ Ret_t smlEndAtomicFuncL();
+ Ret_t smlStartSequenceFuncL( SmlSequencePtr_t aContent );
+ Ret_t smlEndSequenceFuncL();
+ Ret_t smlAddCmdFuncL( SmlAddPtr_t aContent );
+ Ret_t smlCopyCmdFuncL( SmlCopyPtr_t aContent);
+ Ret_t smlDeleteCmdFuncL( SmlDeletePtr_t aContent );
+ Ret_t smlExecCmdFuncL( SmlExecPtr_t aContent );
+ Ret_t smlMapCmdFuncL( SmlMapPtr_t aContent );
+ Ret_t smlReplaceCmdFuncL( SmlReplacePtr_t aContent );
+ Ret_t smlSearchCmdFuncL( SmlSearchPtr_t aContent );
+ Ret_t smlMoveCmdFuncL( SmlMovePtr_t aContent );
+
+ private:
+ TInt iContentCount;
+ SmlMetInfMetInf_t* iMetInf;
+ };
+
+
+//Class for parsing DM server alert notification version 1.1
+class CNSmlDMAlertParser11 : public CNSmlMessageParserBase
+ {
+ public:
+
+ /**
+ * Constuctor
+ * CNSmlDMAlertParser11( CSmlAlertInfo& aAlertInfo,
+ * CSyncMLHistoryPushMsg& aHistoryInfo )
+ * @param aAlertInfo - reference to CSmlAlertInfo : container for hold
+ * parsed data
+ * @param aHistoryInfo - reference to CSyncMLHistoryPushMsg :
+ * container for hold parsed data
+ * @return -
+ */
+ CNSmlDMAlertParser11( CSmlAlertInfo& aAlertInfo,
+ CSyncMLHistoryPushMsg& aHistoryInfo );
+
+ /**
+ * Destructor
+ * ~CNSmlDMAlertParser11();
+ * @param -
+ * @return -
+ */
+ virtual ~CNSmlDMAlertParser11();
+
+ /**
+ * Derived from base class. Implements the parsing.
+ * void ParseMessageL()
+ * @param -
+ * @return -
+ */
+ virtual void ParseMessageL();
+
+ /**
+ * Derived from base class. Targets the profile using server id.
+ * void SearchProfileL( TDesC8& aServerUri )
+ * @param aServerUri - Server Id.
+ * @return -
+ */
+ virtual void SearchProfileL( TDesC8& aServerUri );
+
+ /**
+ * Resolves the profile if more than one match is found
+ * void ResolveProfileL(TInt aContentCount)
+ * @param aContentCount - Number of alerted contents
+ * @return -
+ */
+ virtual void ResolveProfileL( TInt aContentCount );
+ };
+
+//Class for parsing DS server alert notification version 1.2
+class CNSmlDSAlertParser12 : public CNSmlMessageParserBase
+ {
+ public:
+
+ /**
+ * Constuctor
+ * CNSmlDSAlertParser12( CSmlAlertInfo& aAlertInfo,
+ * CSyncMLHistoryPushMsg& aHistoryInfo )
+ * @param aAlertInfo - reference to CSmlAlertInfo : container for hold
+ * parsed data
+ * @param aHistoryInfo - reference to CSyncMLHistoryPushMsg :
+ container for hold parsed data
+ * @return -
+ */
+ CNSmlDSAlertParser12( CSmlAlertInfo& aAlertInfo,
+ CSyncMLHistoryPushMsg& aHistoryInfo );
+
+ /**
+ * Destructor
+ * ~CNSmlDSAlertParser12();
+ * @param -
+ * @return -
+ */
+ virtual ~CNSmlDSAlertParser12();
+
+ /**
+ * Derived from base class. Implements the parsing.
+ * void ParseMessageL()
+ * @param -
+ * @return -
+ */
+ virtual void ParseMessageL();
+
+ /**
+ * Derived from base class. Targets the profile using server id.
+ * void SearchProfileL( TDesC8& aServerUri )
+ * @param aServerUri - Server Id.
+ * @return -
+ */
+ virtual void SearchProfileL( TDesC8& aServerUri );
+
+ /**
+ * Derived from base class. Targets content type with remote database
+ * path + MimeType.
+ * void MatchContentTypeL( TDesC8& aPath, TInt aContentType,
+ * TSmlSyncType aSyncType, TInt aProfileIndex )
+ * @param aPath - Database path.
+ * @param aContentType - Value of content type defined in SAN message
+ * @param aSyncType - Sync type defined in SAN message for the content
+ * @param aProfileIndex - index of the profile data container
+ * @return -
+ */
+ virtual void MatchContentTypeL( TDesC8& aPath, TInt aContentType,
+ TSmlSyncType aSyncType, TInt aProfileIndex );
+
+ /**
+ * Resolves the profile if more than one match is found
+ * void ResolveProfileL( TInt aContentCount )
+ * @param aContentCount - Number of alerted contents
+ * @return -
+ */
+ virtual void ResolveProfileL( TInt aContentCount );
+
+ private:
+
+ /**
+ * Derived from base class. Targets content type with mime-type.
+ * TBool ConvertContentTypeLC( const TInt aContentNum,
+ * const TInt aDataProviderId )
+ * @param aContentNum - Value of content type defined in SAN message
+ * @param aDataProviderId - UID of the content type
+ * @return - ETrue if content type is found
+ */
+ TBool ConvertContentTypeL( const TInt aContentNum,
+ const TInt aDataProviderId );
+
+ /**
+ * Derived from base class. Implements the parsing.
+ * void ValidateSyncType( TInt& aSyncType )
+ * @param aSyncType - received sync type
+ * @return -
+ */
+ void ValidateSyncType( TInt& aSyncType );
+ };
+
+
+class NSmlParserFactory
+ {
+ public:
+
+ /**
+ * Factory method to create appropriate alert parser
+ * CreateAlertParserL( TSmlUsageType aType, TSmlProtocolVersion aVersion
+ * , CSmlAlertInfo& aAlertInfo, CSyncMLHistoryPushMsg& aHistoryInfo )
+ * @param aType - Specifies the usage type DM/DS
+ * @param aVersion - Specifies the protocol version
+ * @param aAlertInfo - reference to CSmlAlertInfo instance
+ * @param aHistoryInfo - reference to CSyncMLHistoryPushMsg instance
+ * @return - instance of CNSmlMessageParserBase derived class
+ */
+ static CNSmlMessageParserBase* CreateAlertParserL( TSmlUsageType aType,
+ TSmlProtocolVersion aVersion, CSmlAlertInfo& aAlertInfo,
+ CSyncMLHistoryPushMsg& aHistoryInfo );
+ };
+
+
+// container of the alert message. Item of alert message queue
+class CNSmlMessageItem : public CBase
+ {
+ public:
+
+ /**
+ * Two phase constructor
+ * CNSmlMessageItem* NewL( const TDesC8& aMessage,
+ * TSmlUsageType aType, TSmlProtocolVersion aVersion,
+ * TSmlTransportId aBearerType )
+ * @param aMessage - reference to message
+ * @param aType - Defines if the message is DM or DS
+ * @param aVersion - specifies used DS or DM protocol version
+ * @param aBearerType - specifies used bearer type
+ * @return - instance of CNSmlMessageItem
+ */
+ IMPORT_C static CNSmlMessageItem* NewL( const TDesC8& aMessage,
+ TSmlUsageType aType, TSmlProtocolVersion aVersion,
+ TSmlTransportId aBearerType );
+
+ /**
+ * Destructor
+ * ~CNSmlMessageItem();
+ * @param -
+ * @return -
+ */
+ ~CNSmlMessageItem();
+
+ static const TInt iOffset;
+
+ /**
+ * returns reference to message
+ * TDesC8& Message()
+ * @param -
+ * @return -
+ */
+ IMPORT_C TDesC8& Message();
+
+ private:
+
+ /**
+ * Constructor
+ * CNSmlMessageItem();
+ * @param -
+ * @return -
+ */
+ CNSmlMessageItem();
+
+ /**
+ * Second constructor
+ * ConstructL( const TDesC8& aMessage, TSmlUsageType aType,
+ * TSmlProtocolVersion aVersion, TSmlTransportId aBearerType );
+ * @param aMessage - reference to message
+ * @param aType - Defines if the message is DM or DS
+ * @param aVersion - specifies used DS or DM protocol version
+ * @param aBearerType - specifies used bearer type
+ * @return -
+ */
+ void ConstructL( const TDesC8& aMessage, TSmlUsageType aType,
+ TSmlProtocolVersion aVersion, TSmlTransportId aBearerType );
+
+ private:
+ TDblQueLink iDlink;
+ HBufC8* iMessage;
+ TSmlUsageType iUsageType;
+ TSmlProtocolVersion iProtocol;
+ TSmlTransportId iBearerType;
+ friend class CNSmlMessageQueue;
+ };
+
+class MNSmlMessageHandler
+ {
+ public:
+
+ /**
+ * Checks if there is message in the queue
+ * void CheckMessage( TBool& aMore, TSmlUsageType& aType,
+ * TSmlProtocolVersion& aVersion, TSmlTransportId& aBearerType )
+ * @param aMore - Set to ETrue if there is message in the queue
+ * @param aType - Set to usage type of the message
+ * @param aVersion - Set to used protocol version
+ * @param aBearerType - specifies used bearer type
+ * @return -
+ */
+ virtual void CheckMessage( TBool& aMore, TSmlUsageType& aType,
+ TSmlProtocolVersion& aVersion,
+ TSmlTransportId& aBearerType ) = 0;
+
+ /**
+ * Returns the length of the queued SAN message
+ * TInt MessageSize()
+ * @param -
+ * @return TInt - size of the message
+ */
+ virtual TInt MessageSize() = 0;
+
+ /**
+ * Makes a copy of the message
+ * void AlertMessage(TDes8& aMessage )
+ * @param aMessage - reference of descriptor the message is copied to
+ * @return -
+ */
+ virtual void AlertMessage( TDes8& aMessage ) = 0;
+
+ /**
+ * Creates a job
+ * void CreateJobL( CSmlAlertInfo& aInfo, TBool& aQuit,
+ * const TPtrC8& aPackage )
+ * @param aInfo - Container of the parsed alert info
+ * @param aQuit - Returns whether there is next is message in queue
+ * @param aPackage - Contains alert package if 1.1 version alert message
+ * @return -
+ */
+ virtual void CreateJobL( CSmlAlertInfo& aInfo, TBool& aQuit,
+ const TPtrC8& aPackage ) = 0;
+
+ /**
+ * Disconnects local connection.
+ * void DoDisconnect()
+ * @param -
+ * @return -
+ */
+ virtual void DoDisconnect() = 0;
+ };
+
+
+class CNSmlAlertHandler : public CActive
+ {
+ public:
+
+ /**
+ * Two phase constructor
+ * CNSmlAlertHandler* NewL(MNSmlMessageHandler* aMsgHandler)
+ * @param aMsgHandler - Pointer to the alert message handler
+ * @return - new instance of CNSmlAlertHandler
+ */
+ static CNSmlAlertHandler* NewL( MNSmlMessageHandler* aMsgHandler );
+
+ /**
+ * Destructor
+ * ~CNSmlAlertHandler()
+ * @param -
+ * @return -
+ */
+ ~CNSmlAlertHandler();
+
+ /**
+ * Activates alert handler
+ * void ProcessAlert()
+ * @param -
+ * @return -
+ */
+ void ProcessAlert();
+
+ /**
+ * Method from base class
+ * void DoCancel()
+ * @param -
+ * @return -
+ */
+ void DoCancel();
+
+ /**
+ * Method from base class. Parses the message.
+ * void RunL()
+ * @param -
+ * @return -
+ */
+ void RunL();
+
+ private:
+
+ /**
+ * Fills the alert info before creating job
+ * TBool FinalizeBeforeJobCreationL()
+ * @param -
+ * @return - ETrue if query is accepted
+ */
+ TBool FinalizeBeforeJobCreationL();
+
+ /**
+ * Checks whether alert has already been handled
+ * void CheckDigestL(const TInt aProfileId, const TDesC8& aDigest)
+ * @param aProfileId - Id of the profile
+ * @param aDigest - Digest parsed from the SAN message
+ * @return -
+ */
+ void CheckDigestL( const TInt aProfileId, const TDesC8& aDigest );
+
+ /**
+ * Saves the result to profile history log and adds new entry
+ * void SaveAlertInfoL(TBool aNewEntry);
+ * @param aNewEntry - ETrue if new entry
+ * @return -
+ */
+ void SaveAlertInfoL();
+
+ /**
+ * Checks if profile has different version and changes to alert's
+ * version if different.
+ * void CheckProtocolAndChangeL( TSmlProtocolVersion& aVersion )
+ * @param aVersion - used protocol version
+ * @return -
+ */
+ void CheckProtocolAndChangeL( TSmlProtocolVersion& aVersion ) const;
+
+ /**
+ * Parses the message.
+ * void DoRunL()
+ * @param -
+ * @return -
+ */
+ void DoRunL();
+
+ private:
+
+ /**
+ * Constructor
+ * CNSmlAlertHandler()
+ * @param -
+ * @return -
+ */
+ CNSmlAlertHandler();
+
+ /**
+ * Second phase constructor
+ * void ConstructL( MNSmlMessageHandler* aMsgHandler )
+ * @param aMsgHandler - Pointer to MNSmlMessageHandler observer
+ * @return -
+ */
+ void ConstructL( MNSmlMessageHandler* aMsgHandler );
+
+ private:
+ MNSmlMessageHandler* iMsgHandler;
+ CSyncMLHistoryPushMsg* iHistoryInfo;
+ CSmlAlertInfo* iAlertInfo;
+ CNSmlHistoryArray* iHistoryArray;
+ CNSmlMessageParserBase* iAlertParser;
+ TBool iNewEntry;
+ HBufC* iPackage;
+ };
+
+class CNSmlMessageQueue : public CBase, public MNSmlMessageHandler
+ {
+ public:
+
+ enum TNSmlQueueState
+ {
+ ENSmlIdle,
+ ENSmlProcessing,
+ ENSmlSuspended
+ };
+ /**
+ * Two phase constructor
+ * CNSmlMessageQueue* NewL( MNSmlAlertObserver* aObserver );
+ * @param aMsgHandler - Pointer to the alert message handler
+ * @return - new instance of CNSmlMessageQueue
+ */
+ IMPORT_C static CNSmlMessageQueue* NewL( MNSmlAlertObserver* aObserver );
+
+ /**
+ * Destructor
+ * ~CNSmlMessageQueue()
+ * @param -
+ * @return -
+ */
+ IMPORT_C virtual ~CNSmlMessageQueue();
+
+ /**
+ * Inserts new alert message to alert message queue
+ * void AddMessageL( const TDesC8& aMessage, TSmlUsageType aType,
+ * TSmlProtocolVersion aVersion, TSmlTransportId aBearerType );
+ * @param aMessage - Alert message
+ * @param aType - Usage type of the message
+ * @param aVersion - Protocol version of the message
+ * @param aBearerType - specifies used bearer type
+ * @return -
+ */
+ IMPORT_C void AddMessageL( const TDesC8& aMessage, TSmlUsageType aType,
+ TSmlProtocolVersion aVersion,
+ TSmlTransportId aBearerType );
+
+ /**
+ * Check if queue is empty
+ * TBool IsEmpty()
+ * @param -
+ * @return - ETrue if message queue is empty
+ */
+ IMPORT_C TBool IsEmpty();
+
+ /**
+ * void ServerSuspendedL( TBool aSuspend )
+ * @param aSuspend - ETrue if server goes to suspend mode (back up)
+ * @return -
+ */
+ IMPORT_C void ServerSuspended( TBool aSuspend );
+
+ /**
+ * Method from the base class
+ * void CheckMessage( TBool& aMore, TSmlUsageType& aType,
+ * TSmlProtocolVersion& aVersion, TSmlTransportId &aBearerType )
+ * @param aMore - Set to ETrue if there is message in the queue
+ * @param aType - Set to usage type of the message
+ * @param aVersion - Set to used protocol version
+ * @param aBearerType - specifies used bearer type
+ * @return -
+ */
+ virtual void CheckMessage( TBool& aMore, TSmlUsageType& aType,
+ TSmlProtocolVersion& aVersion,
+ TSmlTransportId &aBearerType );
+
+ /**
+ * Method from the base class
+ * TInt MessageSize()
+ * @param -
+ * @return TInt - size of the message
+ */
+ virtual TInt MessageSize();
+
+ /**
+ * Method from the base class
+ * void AlertMessage( TDes8& aMessage )
+ * @param aMessage - reference of descriptor the message is copied to
+ * @return -
+ */
+ virtual void AlertMessage( TDes8& aMessage );
+
+ /**
+ * Method from the base class
+ * void CreateJobL( CSmlAlertInfo& aInfo, TSmlUsageType aType, TBool& aQuit, const TPtrC8& aPackage )
+ * @param aInfo - Container of the parsed alert info
+ * @param aQuit - Returns whether there is next is message in queue
+ * @param aPackage - pointer to the message
+ * @return -
+ */
+ virtual void CreateJobL( CSmlAlertInfo& aInfo, TBool& aQuit, const TPtrC8& aPackage );
+
+ /**
+ * Disconnects local connection.
+ * void DoDisconnect()
+ * @param -
+ * @return -
+ */
+ virtual void DoDisconnect();
+
+ private:
+
+ /**
+ * Constructor
+ * CNSmlMessageQueue(MNSmlAlertObserver* aObserver)
+ * @param aObserver - Pointer to the alert observer
+ * @return -
+ */
+ IMPORT_C CNSmlMessageQueue( MNSmlAlertObserver* aObserver );
+
+ /**
+ * Second phase constructor
+ * void ConstructL()
+ * @param aMsgHandler - Pointer to MNSmlMessageHandler observer
+ * @return -
+ */
+ void ConstructL();
+
+ /**
+ * Clears the queue
+ * void DestroyItems()
+ * @param -
+ * @return -
+ */
+ void DestroyItems();
+
+ private:
+ TDblQue<CNSmlMessageItem> iAlertQueue;
+ TDblQueIter<CNSmlMessageItem> iAlertIterator;
+ CNSmlAlertHandler* iAlertHandler;
+ MNSmlAlertObserver* iAlertObserver;
+ TNSmlQueueState iState;
+ };
+
+#endif
\ No newline at end of file