--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/loggingservices/eventlogger/LogWrap/inc/LOGWRAP.H Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,302 @@
+// Copyright (c) 2003-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:
+//
+
+#ifndef __LOGWRAP_H__
+#define __LOGWRAP_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include <barsc2.h> // For CResourceFile
+#include <d32dbms.h>
+#include <logwrapconst.h>
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+ #include <logwraplimits.h>
+ #include "logcntdef.h"
+#endif
+
+#ifndef __WINC__
+#include <logwrap.rsg>
+#endif
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+/**
+Contact item ID. These are used to uniquely identify contact items within a contacts database.
+@publishedAll
+@released
+*/
+typedef TInt32 TLogContactItemId;
+
+#endif
+
+/**
+@publishedAll
+@released
+*/
+typedef TUint32 TLogViewId;
+
+
+const TLogFlags KLogNullFlags = 0;
+const TLogFlags KLogFlagsMask = 0xF;
+
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+/**
+@internalAll
+*/
+const TInt KLogActiveDoNotCompleteIfActive = KMaxTInt-1;
+#endif
+
+//SimId typedef. Probably the final version will import it from different header.
+typedef TUint32 TSimId;
+//"Null" SimId value.
+const TSimId KLogNullSimId = 0;
+
+//**********************************
+// CLogActive
+//**********************************
+
+/**
+Common active object behaviour.
+
+This is an abstract class that defines common active object behaviour for
+the log engine classes.
+@publishedAll
+@released
+*/
+class CLogActive : public CActive
+ {
+public:
+ IMPORT_C ~CLogActive();
+ //
+protected:
+ IMPORT_C CLogActive(TInt aPriority);
+ IMPORT_C void Queue(TRequestStatus& aStatus);
+ IMPORT_C void Complete(TInt aStatus);
+ IMPORT_C void DoCancel();
+ //
+private:
+ //
+ IMPORT_C void RunL();
+ virtual void DoRunL()=0;
+ IMPORT_C virtual void DoComplete(TInt&);
+ //
+private:
+ TRequestStatus* iReport;
+ };
+
+//**********************************
+// CLogEvent
+//**********************************
+
+/**
+Encapsulates the details of an event.
+
+Where time is used, it must be specified as UTC rather than local time.
+
+@publishedAll
+@released
+*/
+class CLogEvent : public CBase
+ {
+public:
+ IMPORT_C static CLogEvent* NewL();
+ IMPORT_C ~CLogEvent();
+ //
+public:
+ inline TLogId Id() const;
+ inline void SetId(TLogId aId);
+ //
+ inline TUid EventType() const;
+ inline void SetEventType(TUid aId);
+ //
+ inline const TDesC& RemoteParty() const;
+ inline void SetRemoteParty(const TDesC& aRemote);
+ //
+ inline const TDesC& Direction() const;
+ inline void SetDirection(const TDesC& aDirection);
+ //
+ inline const TTime& Time() const;
+ inline void SetTime(const TTime& aTime);
+ //
+ inline TLogDurationType DurationType() const;
+ inline void SetDurationType(TLogDurationType aDurationType);
+ //
+ inline TLogDuration Duration() const;
+ inline void SetDuration(TLogDuration aDuration);
+ //
+ inline const TDesC& Status() const;
+ inline void SetStatus(const TDesC& aStatus);
+ //
+ inline const TDesC& Subject() const;
+ inline void SetSubject(const TDesC& aSubject);
+ //
+ inline const TDesC& Number() const;
+ inline void SetNumber(const TDesC& aNumber);
+ //
+ inline TLogContactItemId Contact() const;
+ inline void SetContact(TLogContactItemId aContact);
+ //
+ inline TLogLink Link() const;
+ inline void SetLink(TLogLink aLink);
+ //
+ inline const TDesC& Description() const;
+ inline void SetDescription(const TDesC& aDescription);
+ //
+ inline TLogFlags Flags() const;
+ inline void SetFlags(TLogFlags aFlags);
+ inline void ClearFlags(TLogFlags aFlags);
+ //
+ inline const TDesC8& Data() const;
+ IMPORT_C void SetDataL(RReadStream& aStream, TInt aLen);
+ IMPORT_C void SetDataL(const TDesC8& aData);
+ //
+ IMPORT_C void CopyL(const CLogEvent& aEvent);
+
+ IMPORT_C void InternalizeL(RReadStream& aStream);
+ IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+ //
+ IMPORT_C void SetSimId(TSimId aSimId);
+ IMPORT_C TSimId SimId() const;
+ //
+private:
+ CLogEvent();
+ void ConstructL();
+ void InternalizeBufL(RReadStream& aStream, HBufC*& aDes);
+ //
+private:
+ TLogId iId;
+ TUid iEventType;
+ TTime iTime;
+ TLogDurationType iDurationType;
+ TLogDuration iDuration;
+ TLogContactItemId iContact;
+ TLogLink iLink;
+ TLogFlags iFlags;
+ HBufC* iDescription;
+ HBufC* iRemoteParty;
+ HBufC* iDirection;
+ HBufC* iStatus;
+ HBufC* iSubject;
+ HBufC* iNumber;
+ HBufC8* iData;
+#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM
+ TSimId iSimId;
+#endif
+ };
+
+//**********************************
+// CLogBase
+//**********************************
+
+/**
+Base class for the log engine implementation.
+
+This class defines the interface that client code uses to perform simple actions
+on the log database.
+
+The class provides default implementations for the event handling functions.
+The Log Engine, i.e. an instance of CLogClient, is derived from this class
+and provides implementations for the event handling functions.
+
+The class also deals with some aspects of resource file handling.
+
+An instance of this class is constructed by the log wrapper, CLogWrapper,
+if the phone does not implement logging.
+
+An instance of this class is never constructed by clients.
+
+@see CLogClient
+@see CLogWrapper
+@publishedAll
+@released
+*/
+class CLogBase : public CLogActive
+ {
+public:
+ IMPORT_C CLogBase(TInt aPriority);
+ IMPORT_C ~CLogBase();
+ //
+ IMPORT_C virtual void GetEvent(CLogEvent& aEvent, TRequestStatus& aStatus);
+ IMPORT_C virtual void AddEvent(CLogEvent& aEvent, TRequestStatus& aStatus);
+ IMPORT_C virtual void ChangeEvent(const CLogEvent& aEvent, TRequestStatus& aStatus);
+ IMPORT_C virtual void DeleteEvent(TLogId aId, TRequestStatus& aStatus);
+ //
+ IMPORT_C virtual TInt GetString(TDes& aString, TInt aId) const;
+ //
+protected:
+ IMPORT_C void LoadResourcesL(RFs& aFs);
+ inline const CResourceFile* ResourceFile() const;
+ //
+private:
+ void DoRunL();
+ //
+private:
+ CResourceFile* iResourceFile;
+
+ //
+private:
+ IMPORT_C virtual void CLogBase_Reserved1();
+ TAny* CLogBase_Reserved;
+ };
+
+//**********************************
+// CLogWrapper
+//**********************************
+
+/**
+The log wrapper.
+
+As some UI variants do not use a Log Engine, the log wrapper provides a consistent
+interface to clients that need to work, without being changed, with multiple
+UI variants.
+
+The log wrapper is provided in its own DLL, the logwrap.dll.
+
+If a Log Engine is not installed on a phone, the log wrapper creates an instance
+of the CLogBase class, whose event handling requests complete with KErrNotSupported
+and whose functions return KErrNotSupported.
+
+If a Log Engine is installed on a phone, the log wrapper creates an instance
+of the CLogClient class, provided in a separate DLL, the logcli.dll . The
+CLogClient class derives from CLogBase and provides implementations for the
+event handling requests and functions.
+
+@see CLogBase
+@see CLogClient
+@publishedAll
+@released
+*/
+class CLogWrapper : public CBase
+ {
+public:
+ IMPORT_C static CLogWrapper* NewL(RFs& aFs, TInt aPriority = CActive::EPriorityStandard);
+ IMPORT_C ~CLogWrapper();
+ //
+ inline CLogBase& Log();
+ IMPORT_C TBool ClientAvailable() const;
+ //
+private:
+ CLogWrapper();
+ void ConstructL(RFs& aFs, TInt aPriority);
+ //
+private:
+ CLogBase* iBase;
+ };
+
+#include <logwrap.inl>
+#include <logeng.h>
+
+#endif