diff -r 000000000000 -r b497e44ab2fc remotemgmt_plat/syncml_client_api/inc/SyncMLHistory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotemgmt_plat/syncml_client_api/inc/SyncMLHistory.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,265 @@ +/* +* Copyright (c) 2009 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: History Log info +* +*/ +/////////////////////////////////////////////////////////////////////////////// +// SyncMLHistory.h +// +// v05 +// +/////////////////////////////////////////////////////////////////////////////// +#ifndef __SYNCMLHISTORY_H__ +#define __SYNCMLHISTORY_H__ +// +#include +#include +#include +// +#include +// +class CSmlAlertInfo; +class CSmlHistoryEntrySet; +// +/** Unique ID for Sync Job entry type. */ +const TInt KSmlHistoryEntryJobTypeValue = 0x10009FA9; +const TUid KUidSmlHistoryEntryJob = { KSmlHistoryEntryJobTypeValue }; +// +/** Unique ID for Push Msg entry type. */ +const TInt KSmlHistoryEntryPushMsgTypeValue = 0x10009FAA; +const TUid KUidSmlHistoryEntryPushMsg = { KSmlHistoryEntryPushMsgTypeValue }; +// +/** Panic codes for shared History Log classes. */ +enum TSmlPanicHistoryShared + { + ESmlPanicHistoryShared_BadTaskId, + ESmlPanicHistoryShared_BadSortOrdering + }; +// + +/////////////////////////////////////////////////////////////////////////////// +// CSyncMLHistoryEntry +/////////////////////////////////////////////////////////////////////////////// +class CSyncMLHistoryEntry : public CBase +/** + Base class for a history log entry. + + Not intended for user derivation. Derived classes: + @see CSyncMLHistoryJob + + @publishedAll + @released + */ + { +public: + /** An ordering of History Entries. */ + enum TSortOrder + { + /** Ordered by Time Stamp. */ + ESortByTime, + /** Ordered by Entry Type. */ + ESortByType + }; +public: + // Factory methods based upon entry type. + IMPORT_C static CSyncMLHistoryEntry* NewL(TUid aEntryType); + IMPORT_C static CSyncMLHistoryEntry* NewL(RReadStream&); + IMPORT_C static CSyncMLHistoryEntry* NewL(const CSyncMLHistoryEntry&); +public: + IMPORT_C virtual ~CSyncMLHistoryEntry(); + IMPORT_C virtual void ExternalizeL(RWriteStream&) const; + IMPORT_C TUid EntryType() const; + IMPORT_C TInt EntryId() const; + virtual TSmlProfileId Profile() const = 0; + virtual TTime TimeStamp() const = 0; + virtual TInt ResultCode() const = 0; + +protected: + CSyncMLHistoryEntry(TUid); + /** @internalTechnology */ + IMPORT_C static CSyncMLHistoryEntry* DoDynamicCast(TUid aEntryType, CSyncMLHistoryEntry*); + /** @internalTechnology */ + IMPORT_C static const CSyncMLHistoryEntry* DoDynamicCast(TUid aEntryType, const CSyncMLHistoryEntry*); + virtual void InternalizeL(RReadStream&); +private: + friend class CEntrySet; + IMPORT_C void SetEntryId(TInt); + IMPORT_C virtual TAny* Reserved(TUid); +private: + TUid iEntryType; + TInt iEntryId; + TInt iSpare; + }; + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +// CSyncMLHistoryJob +/////////////////////////////////////////////////////////////////////////////// +class CSyncMLHistoryJob : public CSyncMLHistoryEntry +/** + This class holds the result of a session with a server. + @publishedAll + @released +*/ + { +public: + class TTaskInfo + /** + This class identifies a sync task within the profile, + and the result of the attempt to synchronise it. + */ + { + public: + IMPORT_C TTaskInfo(); + IMPORT_C void InternalizeL(RReadStream&); + IMPORT_C void ExternalizeL(RWriteStream&) const; + public: + /** Identifies the profile sync task */ + TSmlTaskId iTaskId; + /** Indicates the synchronisation result */ + TInt iError; + /** Indicates the number of items added to the db */ + TInt iItemsAdded; + /** Indicates the number of items modified in the db */ + TInt iItemsChanged; + /** Indicates the number of items deleted from the db */ + TInt iItemsDeleted; + /** Indicates the number of items moved in the db */ + TInt iItemsMoved; + /** Indicates the number of items failed to modify the db */ + TInt iItemsFailed; + /** Indicates the number of items added to the server's db */ + TInt iServerItemsAdded; + /** Indicates the number of items modified in the server's db */ + TInt iServerItemsChanged; + /** Indicates the number of items deleted from the server's db */ + TInt iServerItemsDeleted; + /** Indicates the number of items moved in the server's db */ + TInt iServerItemsMoved; + /** Indicates the number of items failed to modify the server's db */ + TInt iServerItemsFailed; + /** Indicates the actual SyncType used for the synchronisation */ + TSmlSyncType iSyncType; + }; +public: + inline static CSyncMLHistoryJob* DynamicCast(CSyncMLHistoryEntry*); + inline static const CSyncMLHistoryJob* DynamicCast(const CSyncMLHistoryEntry*); + IMPORT_C static CSyncMLHistoryJob* NewL(); + IMPORT_C static CSyncMLHistoryJob* NewL(TSmlProfileId, const RArray&); + IMPORT_C virtual ~CSyncMLHistoryJob(); + IMPORT_C virtual void ExternalizeL(RWriteStream&) const; +public: + IMPORT_C virtual TSmlProfileId Profile() const; + IMPORT_C virtual TTime TimeStamp() const; + IMPORT_C TTime LastSuccessSyncTime() const; + IMPORT_C virtual TInt ResultCode() const; + IMPORT_C TTime FinishTime() const; + IMPORT_C TInt TaskCount() const; + IMPORT_C const TTaskInfo& TaskAt(TInt) const; +public: + IMPORT_C TTaskInfo& TaskById(TSmlTaskId); + IMPORT_C void SetResult(TTime aFinishTime, TInt aResultCode); + IMPORT_C void SetLastSyncResult(TTime aSuccessSyncTime ); +private: + CSyncMLHistoryJob(); + void ConstructL(TSmlProfileId, const RArray&); + virtual void InternalizeL(RReadStream&); +private: + TTime iStartTime; + TTime iFinishTime; + TInt iResultCode; + TSmlProfileId iProfileId; + RArray iTaskInfo; + TTime iLastSuccessSync; + }; + +/////////////////////////////////////////////////////////////////////////////// +inline CSyncMLHistoryJob* CSyncMLHistoryJob::DynamicCast(CSyncMLHistoryEntry* aEntry) + { + return static_cast(CSyncMLHistoryEntry::DoDynamicCast(KUidSmlHistoryEntryJob, aEntry)); + } + +inline const CSyncMLHistoryJob* CSyncMLHistoryJob::DynamicCast(const CSyncMLHistoryEntry* aEntry) + { + return static_cast(CSyncMLHistoryEntry::DoDynamicCast(KUidSmlHistoryEntryJob, aEntry)); + } + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +// CSyncMLHistoryPushMsg +/////////////////////////////////////////////////////////////////////////////// +class CSyncMLHistoryPushMsg : public CSyncMLHistoryEntry +/** + This class holds the result of a parsing a push msg. + This class contains a counter that stores how many times the same message has been received. + @publishedAll + @released +*/ + { +public: + inline static CSyncMLHistoryPushMsg* DynamicCast(CSyncMLHistoryEntry*); + inline static const CSyncMLHistoryPushMsg* DynamicCast(const CSyncMLHistoryEntry*); + IMPORT_C static CSyncMLHistoryPushMsg* NewL(); + IMPORT_C virtual ~CSyncMLHistoryPushMsg(); + IMPORT_C virtual void ExternalizeL(RWriteStream&) const; +public: + IMPORT_C virtual TSmlProfileId Profile() const; + IMPORT_C virtual TTime TimeStamp() const; + IMPORT_C virtual TInt ResultCode() const; + IMPORT_C TInt ReceivedCount() const; + IMPORT_C const TDesC8& MsgDigest() const; + IMPORT_C TInt AlertCount() const; + IMPORT_C const CSmlAlertInfo& Alert(TInt aIndex) const; +public: + IMPORT_C void IncReceivedCount(); + IMPORT_C void SetMsgDigest(const TDesC8&); + IMPORT_C void AddAlertsL(RPointerArray&); // Ownership of CSmlAlertInfo objects is transferred. + IMPORT_C void ResetAlerts(); + IMPORT_C void SetResultCode(TInt aResultCode); + +private: + CSyncMLHistoryPushMsg(); + virtual void InternalizeL(RReadStream&); +private: + TTime iTimeStamp; + TInt iResultCode; + TInt iRcvCount; + TBuf8 iDigest; + RPointerArray iAlerts; + }; + +/////////////////////////////////////////////////////////////////////////////// +inline CSyncMLHistoryPushMsg* CSyncMLHistoryPushMsg::DynamicCast(CSyncMLHistoryEntry* aEntry) + { + return static_cast(CSyncMLHistoryEntry::DoDynamicCast(KUidSmlHistoryEntryPushMsg, aEntry)); + } + +inline const CSyncMLHistoryPushMsg* CSyncMLHistoryPushMsg::DynamicCast(const CSyncMLHistoryEntry* aEntry) + { + return static_cast(CSyncMLHistoryEntry::DoDynamicCast(KUidSmlHistoryEntryPushMsg, aEntry)); + } + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +#endif + +