--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/pushentry.h Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,283 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __PUSHENTRY_H__
+#define __PUSHENTRY_H__
+
+#include <e32std.h>
+#include <msvapi.h>
+#include <msvstd.h>
+
+
+/** UID for the WAP Push MTM. */
+const TUid KUidMtmWapPush = {0x10009158};
+/** UID for WAP Push SI messages. */
+const TUid KUidWapPushMsgSI = {0x10009159};
+/** UID for WAP Push SL messages. */
+const TUid KUidWapPushMsgSL = {0x1000915A};
+/** UID for WAP Push multipart messages. */
+const TUid KUidWapPushMsgMultiPart = {0x1000915B};
+/** UID for WAP Push unknown-type messages. */
+const TUid KUidWapPushMsgUnknown = {0x1000915C};
+
+
+// Defines for Masking values used to extract status information from iMtmData1
+/** TMsvEntry::iMtmData1 mask to get Status value. */
+const TInt32 KPushMaskOnlyStatus = 0x0000000F;
+/** TMsvEntry::iMtmData1 mask to all bits except those for the Status value. */
+const TInt32 KPushMaskEverythingButStatus = 0xFFFFFFF0;
+/** TMsvEntry::iMtmData1 mask to get Action value. */
+const TInt32 KPushMaskOnlyAction = 0x000000F0;
+/** TMsvEntry::iMtmData1 mask to all bits except those for the Action value. */
+const TInt32 KPushMaskEverythingButAction = 0xFFFFFF0F;
+
+
+// Defines for Leave Codes
+/** Base value for WAP Push-specific errors. */
+const TInt KWPushBaseError = -1100;
+/** CPushMsgEntryBase::UpdateL() called without a message server entry being loaded
+error. */
+const TInt KWPushNoMsgIndexEntry = (KWPushBaseError-1);
+/** Longest String Allowed. */
+const TInt KLongestStringAllowed=KMaxTInt32;
+
+
+/**
+WAP Push Server MTM state information.
+
+This enum is used by TPushMTMProgress and CWapPushServerMtm.
+
+@publishedPartner
+@released
+@see TPushMTMProgress
+*/
+enum TPushServerMTMState
+ {
+ /** Server is waiting for a command. */
+ EWapPushServerMtmWaiting,
+ /** Server is executing a Change command. */
+ EWapPushServerMtmChange,
+ /** Server is executing a Create command. */
+ EWapPushServerMtmCreate,
+ /** Server is executing a Delete command. */
+ EWapPushServerMtmDelete,
+ /** Unused. */
+ EWapPushServerMtmComplete
+ };
+
+
+/**
+Encapsulates progress information returned for asynchronous operations with
+the WAP Push Server MTM.
+
+This allows error status and ID of current entry to be returned to caller.
+
+@publishedPartner
+@released
+@see CMsvOperation::ProgressL()
+*/
+class TPushMTMProgress
+ {
+public:
+ /** Error code. */
+ TInt iError; // client side needs to be informed of an error
+ /** The number of entries on which the operation was or will be attempted. */
+ TInt iTotalMsgs;
+ /** The number of entries which have been processed. */
+ TInt iMsgsProcessed;
+ /** ID of the (first) message being processed. */
+ TMsvId iMsgId;
+ /** Server state information. */
+ TPushServerMTMState iPushState;// Operation that is currently in progress
+ };
+
+/**
+Packages a TPushMTMProgress object into a descriptor.
+
+@publishedPartner
+@released
+*/
+typedef TPckgBuf<TPushMTMProgress> TPushMTMProgressBuf;
+
+
+/** Panic name and codes */
+_LIT(KPushPanicMoniker, "PUSHENTRY");
+
+/**
+@internalComponent
+@released
+*/
+enum TPushEntryPanic
+ {
+ /** Null Ids for entries not valid (Service, &Msg). */
+ EPushEntryNullMsgId,
+ /** Only save messages under the Service Entry. */
+ EPushEntryServiceIdMismatch,
+ /** Not a WAP Push MTM. */
+ EPushEntryWrongMTMtype,
+ /** iBioType value in TMsvEntry don't match Uid for Push Entry class. */
+ EPushEntryWrongMsgtype
+ };
+
+
+/**
+Abstract base class for classes that handle storage of WAP Push Messages in
+the message server.
+
+The class acts as a wrapper for TMsvEntry, and provides accessors and storage
+functionality. Key pieces of data are mapped onto certain TMsvEntry fields:
+this speeds up access by applications to this data. This base class has the
+generic mappings and storage behaviour. More specialised mappings and storage
+are defined in each derived class.
+
+The mappings of data to TMsvEntry fields standard to all classes are:
+
+Push Message Type UID: TMsvEntry::iBioType
+
+Status: sets bits 0-3 of TMsvEntry::iMtmData1
+
+Some derived classes need to store more data than there are available fields
+in TMsvEntry, and the Unknown type potentially requires large data capacity.
+This additional data is saved in the message store associated with the message
+entry. Derived classes provide this functionality by overriding ExternalizeL()
+and InternalizeL() implementations. The base class itself uses the message store
+to store the WAP Push message's raw header and From information.
+
+@publishedPartner
+@released
+*/
+class CPushMsgEntryBase: public CBase
+ {
+public:
+ /**
+ WAP Push Message status values.
+
+ @internalTechnology
+ @released
+ */
+ enum TPushMsgStatus
+ {
+ /** Message is valid. */
+ EPushMsgStatusValid = 0,
+ /** Message is expired. */
+ EPushMsgStatusExpired,
+ /** Message is deleted. */
+ EPushMsgStatusDeleted,
+ /** Message is corrupt. */
+ EPushMsgStatusCorrupt
+ };
+
+ IMPORT_C CPushMsgEntryBase();
+
+ IMPORT_C virtual ~CPushMsgEntryBase();
+
+ // Creates its own CMsvStore from the CMsvSession & calls StoreL()
+ IMPORT_C virtual TMsvId SaveL(CMsvSession& aSession, TMsvId aParent);
+ IMPORT_C virtual void UpdateL(CMsvSession& aSession);
+
+ // Creates its own CMsvStore from the CMsvSession & calls RestoreL()
+ IMPORT_C virtual void RetrieveL(CMsvSession& aSession, TMsvId aMsgId);
+
+ IMPORT_C void SetEntry(const TMsvEntry& aEntry);
+ IMPORT_C void SetStatus(TInt aStatusFlags);
+ IMPORT_C const TDesC8& Header() const;
+ IMPORT_C void SetHeaderL(const TDesC8& aHeader);
+ IMPORT_C const TDesC8& From() const;
+ IMPORT_C void SetFromL(const TDesC8& aFrom);
+
+ /**
+ Gets the push message content type.
+
+ @return
+ Content type
+ */
+ virtual const TDesC& ContentType() const =0;
+
+ /**
+ Gets the push message type.
+
+ Each derived class represents a different push message type, and implements
+ this to return the appropriate value.
+
+ @return
+ Push message type
+ */
+ virtual TInt32 PushMsgType() const =0;
+ inline const TMsvEntry& Entry() const;
+ inline TInt Status() const;
+
+ IMPORT_C const TDesC& MsgDescription() const;
+ IMPORT_C void SetMsgDescriptionL(const TDesC& aDescription);
+ IMPORT_C const TDesC& MsgDetails() const;
+ IMPORT_C void SetMsgDetailsL(const TDesC& aDetails);
+ IMPORT_C const TTime& ReceivedDate() const;
+ IMPORT_C TInt AppID(TPtrC8& aAppURI, TInt& aAppID, TBool& aIsAnInt) const;
+
+protected:
+ IMPORT_C virtual void ConstructL(const TPtrC8& aAppURI);
+ IMPORT_C virtual void ConstructL(const TInt& aAppID);
+ IMPORT_C virtual void ConstructL();
+
+ // No matching StoreL due to different needs for saving & updating msg's
+ IMPORT_C void RestoreL(CMsvStore& aStore );
+ IMPORT_C virtual void ExternalizeL(RMsvWriteStream& aStream);
+ IMPORT_C virtual void InternalizeL(RMsvReadStream& aStream);
+
+ /**
+ Sets the push message type.
+
+ Each derived class represents a different push message type, and implements
+ this to set the appropriate value.
+ */
+ virtual void SetPushMsgType()=0;// Only the object can set it's push type - class dependent
+ void DoSaveL(CMsvEntry& aMsvEntry);
+
+protected:
+
+ /** Message server entry. */
+ TMsvEntry iEntry;
+
+ /** Copy of the message server entry Details field. */
+ HBufC* iMsgDetails;
+ /** Copy of the message server entry Description field. */
+ HBufC* iMsgDescription;
+
+ /** WAP Push message raw header buffer. */
+ HBufC8* iHeader;
+ /** From field buffer. */
+ HBufC8* iFrom;
+ /** Set to true if the object has an associated entry in the message server index. */
+ TBool iHasServerEntry;
+
+ /** Message AppID as a string. Only one of iAppIDString and iAppIdInt will be set.*/
+ HBufC8* iAppIDString;
+ /** Message AppID as a number. Only one of iAppIDString and iAppIdInt will be set.*/
+ TInt iAppIdInt;
+ };
+
+
+
+
+#include <pushentry.inl>
+
+#endif