epoc32/include/logcli.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100 (2010-03-31)
branchSymbian2
changeset 3 e1b950c65cb4
parent 0 061f57f2323e
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// 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
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __LOGCLI_H__
williamr@2
    17
#define __LOGCLI_H__
williamr@2
    18
williamr@2
    19
// System includes
williamr@2
    20
#include <f32file.h>
williamr@2
    21
#include <d32dbms.h>
williamr@2
    22
#include <logwrap.h>
williamr@2
    23
//
williamr@2
    24
//#include <logserv.rsg>
williamr@2
    25
williamr@2
    26
// Classes referenced
williamr@2
    27
class CLogClientObserver;
williamr@2
    28
class MLogClientChangeObserver;
williamr@2
    29
williamr@2
    30
williamr@2
    31
//**********************************
williamr@2
    32
// CLogEventType
williamr@2
    33
//**********************************
williamr@2
    34
williamr@2
    35
class CLogEventType : public CBase
williamr@2
    36
/** Encapsulates the details of an event type.
williamr@2
    37
williamr@2
    38
An event type is used to associate an event with a user-readable description 
williamr@2
    39
and other configuration information related to the event.
williamr@2
    40
williamr@2
    41
Event types are identified by UID.
williamr@2
    42
williamr@2
    43
@see CLogEvent::EventType()
williamr@2
    44
@see CLogEvent::SetEventType()
williamr@2
    45
@publishedAll 
williamr@2
    46
@released
williamr@2
    47
*/
williamr@2
    48
	{
williamr@2
    49
public:
williamr@2
    50
	IMPORT_C static CLogEventType* NewL();
williamr@2
    51
	IMPORT_C ~CLogEventType();
williamr@2
    52
	//
williamr@2
    53
public:
williamr@2
    54
	inline TUid Uid() const;
williamr@2
    55
	inline void SetUid(TUid aUid);
williamr@2
    56
	//
williamr@2
    57
	inline const TDesC& Description() const;
williamr@2
    58
	inline void SetDescription(const TDesC& aDescription);
williamr@2
    59
	//
williamr@2
    60
	inline TBool LoggingEnabled() const;
williamr@2
    61
	inline void SetLoggingEnabled(TBool aEnable);
williamr@2
    62
	//
williamr@2
    63
	IMPORT_C void Copy(const CLogEventType& aType);
williamr@2
    64
williamr@2
    65
	void InternalizeL(RReadStream& aStream);
williamr@2
    66
	void ExternalizeL(RWriteStream& aStream) const;
williamr@2
    67
	//
williamr@2
    68
private:
williamr@2
    69
	CLogEventType();
williamr@2
    70
	void ConstructL();
williamr@2
    71
	void InternalizeBufL(RReadStream& aStream, HBufC*& aDes);
williamr@2
    72
	//
williamr@2
    73
private:
williamr@2
    74
	TUid iUid;
williamr@2
    75
	HBufC* iDescription;
williamr@2
    76
	TBool iLoggingEnabled;
williamr@2
    77
	};
williamr@2
    78
williamr@2
    79
//**********************************
williamr@2
    80
// TLogConfig
williamr@2
    81
//**********************************
williamr@2
    82
williamr@2
    83
class TLogConfig
williamr@2
    84
/** Encapsulates Log Engine configuration data.
williamr@2
    85
williamr@2
    86
@see CLogClient::GetConfig()
williamr@2
    87
@see CLogClient::ChangeConfig()
williamr@2
    88
@publishedAll
williamr@2
    89
@released
williamr@2
    90
*/
williamr@2
    91
	{
williamr@2
    92
public:
williamr@2
    93
	IMPORT_C TLogConfig();
williamr@2
    94
	//
williamr@2
    95
	void InternalizeL(RReadStream& aStream);
williamr@2
    96
	void ExternalizeL(RWriteStream& aStream) const;
williamr@2
    97
	//
williamr@2
    98
public:
williamr@2
    99
	/** The maximum number of events that the event log holds.
williamr@2
   100
	
williamr@2
   101
	If the number of event log entries exceeds this value, the oldest event is 
williamr@2
   102
	deleted from the log. */
williamr@2
   103
	TLogSize iMaxLogSize;
williamr@2
   104
	
williamr@2
   105
	/** The maximum number of events that a recent event list holds.
williamr@2
   106
	
williamr@2
   107
	If the number of recent event list entries exceeds this value, the oldest 
williamr@2
   108
	event is removed from the list. Note, however, that the event is not deleted 
williamr@2
   109
	from the event log. */
williamr@2
   110
	TLogRecentSize iMaxRecentLogSize;
williamr@2
   111
	
williamr@2
   112
	/** The maximum age, in seconds, for which events can be retained in the event log.
williamr@2
   113
	
williamr@2
   114
	Events older than this are automatically deleted from the event log. 
williamr@2
   115
	
williamr@2
   116
	Purging of events by age can be disabled by setting this value to 0. */
williamr@2
   117
	TLogAge iMaxEventAge;
williamr@2
   118
	};
williamr@2
   119
williamr@2
   120
//**********************************
williamr@2
   121
// CLogFilter
williamr@2
   122
//**********************************
williamr@2
   123
williamr@2
   124
class CLogFilter : public CBase
williamr@2
   125
/** Specifies the conditions that events must satisfy to appear in a view.
williamr@2
   126
williamr@2
   127
In general, a filter is used to construct the WHERE clause of an SQL 
williamr@2
   128
statement based on the content of the filter's fields. The filter's fields 
williamr@2
   129
correspond to the event properties in a log event detail object, i.e. an instance 
williamr@2
   130
of the CLogEvent class.
williamr@2
   131
williamr@2
   132
Where a filter uses time to extract one or more events from the log, this must be 
williamr@2
   133
specified as UTC rather than local time.
williamr@2
   134
williamr@2
   135
@see CLogEvent
williamr@2
   136
@see CLogViewEvent
williamr@2
   137
@see CLogViewRecent
williamr@2
   138
@see CLogViewDuplicate
williamr@2
   139
@publishedAll
williamr@2
   140
@released
williamr@2
   141
*/
williamr@2
   142
	{
williamr@2
   143
public:
williamr@2
   144
	IMPORT_C static CLogFilter* NewL();
williamr@2
   145
	IMPORT_C ~CLogFilter();
williamr@2
   146
	//
williamr@2
   147
public:
williamr@2
   148
	inline TUid EventType() const;
williamr@2
   149
	inline void SetEventType(TUid aType);
williamr@2
   150
	//
williamr@2
   151
	inline const TDesC& RemoteParty() const;
williamr@2
   152
	inline void SetRemoteParty(const TDesC& aRemote);
williamr@2
   153
	//
williamr@2
   154
	inline const TDesC& Direction() const;
williamr@2
   155
	inline void SetDirection(const TDesC& aDirection);
williamr@2
   156
	//
williamr@2
   157
	inline TLogDurationType DurationType() const;
williamr@2
   158
	inline void SetDurationType(TLogDurationType aType);
williamr@2
   159
	//
williamr@2
   160
	inline const TDesC& Status() const;
williamr@2
   161
	inline void SetStatus(const TDesC& aStatus);
williamr@2
   162
	//
williamr@2
   163
	inline TLogContactItemId  Contact() const;
williamr@2
   164
	inline void SetContact(TLogContactItemId  aContact);
williamr@2
   165
	//
williamr@2
   166
	inline const TDesC& Number() const;
williamr@2
   167
	inline void SetNumber(const TDesC& aNumber);
williamr@2
   168
	//
williamr@2
   169
	inline TLogFlags Flags() const;
williamr@2
   170
	inline void SetFlags(TLogFlags aFlags);
williamr@2
   171
	inline void ClearFlags(TLogFlags aFlags);
williamr@2
   172
	//
williamr@2
   173
	inline TUint32 NullFields() const;
williamr@2
   174
	inline void SetNullFields(TUint32 aFields);
williamr@2
   175
	//
williamr@2
   176
	inline const TTime& StartTime() const;
williamr@2
   177
	inline void SetStartTime(const TTime& aStartTime);	
williamr@2
   178
	//
williamr@2
   179
	inline const TTime& EndTime() const;
williamr@2
   180
	inline void SetEndTime(const TTime& aEndTime);
williamr@2
   181
	//
williamr@2
   182
	IMPORT_C void Copy(const CLogFilter& aFilter);
williamr@2
   183
	void InternalizeL(RReadStream& aStream);
williamr@2
   184
	void ExternalizeL(RWriteStream& aStream) const;
williamr@2
   185
	//
williamr@2
   186
private:
williamr@2
   187
	CLogFilter();
williamr@2
   188
	void ConstructL();
williamr@2
   189
	void InternalizeBufL(RReadStream& aStream, HBufC*& aDes);
williamr@2
   190
	//
williamr@2
   191
private:
williamr@2
   192
	TUid iEventType;
williamr@2
   193
	HBufC* iRemoteParty;
williamr@2
   194
	HBufC* iDirection;
williamr@2
   195
	TLogDurationType iDurationType;
williamr@2
   196
	HBufC* iStatus;
williamr@2
   197
	TLogContactItemId  iContact;
williamr@2
   198
	HBufC* iNumber;
williamr@2
   199
	TLogFlags iFlags;
williamr@2
   200
	TUint32 iNullFields;
williamr@2
   201
	TTime iStartTime;
williamr@2
   202
	TTime iEndTime;
williamr@2
   203
	};
williamr@2
   204
williamr@2
   205
class CLogFilterList : public CArrayPtrFlat<const CLogFilter>
williamr@2
   206
/** A set of event view filters.
williamr@2
   207
williamr@2
   208
Specifically, this is an array of pointers to const CLogFilter objects and 
williamr@2
   209
is derived from CArrayPtrFlat<const CLogFilter>.
williamr@2
   210
williamr@2
   211
@see CLogFilter
williamr@2
   212
@see CLogViewEvent
williamr@2
   213
@see CLogViewRecent
williamr@2
   214
@publishedAll
williamr@2
   215
@released
williamr@2
   216
*/
williamr@2
   217
	{
williamr@2
   218
public:
williamr@2
   219
	IMPORT_C CLogFilterList();
williamr@2
   220
	IMPORT_C CLogFilterList* CopyL() const;
williamr@2
   221
	IMPORT_C CLogFilterList* CopyLC() const;
williamr@2
   222
	void InternalizeL(RReadStream& aStream);
williamr@2
   223
	void ExternalizeL(RWriteStream& aStream) const;
williamr@2
   224
	};
williamr@2
   225
williamr@2
   226
//**********************************
williamr@2
   227
// CLogClient
williamr@2
   228
//**********************************
williamr@2
   229
williamr@2
   230
class CLogView;
williamr@2
   231
class RLogSession;
williamr@2
   232
class CLogPackage;
williamr@2
   233
class CLogAddEventClientOp;
williamr@2
   234
class CLogChangeEventClientOp;
williamr@2
   235
class CLogGetEventClientOp;
williamr@2
   236
class CLogDeleteEventClientOp;
williamr@2
   237
class CLogAddTypeClientOp;
williamr@2
   238
class CLogChangeTypeClientOp;
williamr@2
   239
class CLogGetTypeClientOp;
williamr@2
   240
class CLogDeleteTypeClientOp;
williamr@2
   241
class CLogGetConfigClientOp;
williamr@2
   242
class CLogChangeConfigClientOp;
williamr@2
   243
class CLogClearLogClientOp;
williamr@2
   244
class CLogClearRecentClientOp;
williamr@2
   245
williamr@2
   246
class CLogClient : public CLogBase
williamr@2
   247
/** Log Engine implementation.
williamr@2
   248
williamr@2
   249
It creates a shared session on the log database and allows log viewers to 
williamr@2
   250
retrieve events from the log.
williamr@2
   251
williamr@2
   252
The class also provides log administration functions.
williamr@2
   253
williamr@2
   254
Wherever time values are used by this class, they must be specified as UTC rather
williamr@2
   255
than local time. 
williamr@2
   256
williamr@2
   257
@see CLogWrapper
williamr@2
   258
@publishedAll
williamr@2
   259
@released
williamr@2
   260
*/
williamr@2
   261
	{
williamr@2
   262
public:
williamr@2
   263
	IMPORT_C static CLogClient* NewL(RFs& aFs, TInt aPriority = CActive::EPriorityStandard);
williamr@2
   264
	IMPORT_C ~CLogClient();
williamr@2
   265
	//
williamr@2
   266
public:
williamr@2
   267
	IMPORT_C void AddEvent(CLogEvent& aEvent, TRequestStatus& aStatus);
williamr@2
   268
	IMPORT_C void GetEvent(CLogEvent& aEvent, TRequestStatus& aStatus);
williamr@2
   269
	IMPORT_C void ChangeEvent(const CLogEvent& aEvent, TRequestStatus& aStatus);
williamr@2
   270
	IMPORT_C void DeleteEvent(TLogId aId, TRequestStatus& aStatus);
williamr@2
   271
williamr@2
   272
	IMPORT_C void AddEventType(const CLogEventType& aType, TRequestStatus& aStatus);
williamr@2
   273
	IMPORT_C void GetEventType(CLogEventType& aType, TRequestStatus& aStatus);
williamr@2
   274
	IMPORT_C void ChangeEventType(const CLogEventType& aType, TRequestStatus& aStatus);
williamr@2
   275
	IMPORT_C void DeleteEventType(TUid aId, TRequestStatus& aStatus);
williamr@2
   276
	IMPORT_C void GetConfig(TLogConfig& aConfig, TRequestStatus& aStatus);
williamr@2
   277
	IMPORT_C void ChangeConfig(const TLogConfig& aConfig, TRequestStatus& aStatus);
williamr@2
   278
	IMPORT_C void ClearLog(const TTime& aDate, TRequestStatus& aStatus);
williamr@2
   279
	IMPORT_C void ClearLog(TInt aRecentList, TRequestStatus& aStatus);
williamr@2
   280
	//
williamr@2
   281
	IMPORT_C void NotifyChange(TTimeIntervalMicroSeconds32 aDelay, TRequestStatus& aStatus);
williamr@2
   282
	IMPORT_C void NotifyChangeCancel();
williamr@2
   283
	//
williamr@2
   284
	IMPORT_C void SetGlobalChangeObserverL(MLogClientChangeObserver* aObserver);
williamr@2
   285
	//
williamr@2
   286
	IMPORT_C TInt GetString(TDes& aString, TInt aId) const;
williamr@2
   287
	RLogSession& Session() const;
williamr@2
   288
	//
williamr@2
   289
private:
williamr@2
   290
	CLogClient(RFs& aFs, TInt aPriority);
williamr@2
   291
	void ConstructL();
williamr@2
   292
	void DoGetStringL(TDes& aString, TInt aId) const;
williamr@2
   293
	//
williamr@2
   294
	void DoRunL();
williamr@2
   295
	void DoCancel();
williamr@2
   296
	//
williamr@2
   297
private:
williamr@2
   298
	RLogSession* iSession;
williamr@2
   299
	CLogPackage* iPackage;
williamr@2
   300
	CLogAddEventClientOp* iAddEvent;
williamr@2
   301
	CLogChangeEventClientOp* iChangeEvent;
williamr@2
   302
	CLogGetEventClientOp* iGetEvent;
williamr@2
   303
	CLogDeleteEventClientOp* iDeleteEvent;
williamr@2
   304
	CLogAddTypeClientOp* iAddType;
williamr@2
   305
	CLogChangeTypeClientOp* iChangeType;
williamr@2
   306
	CLogGetTypeClientOp* iGetType;
williamr@2
   307
	CLogDeleteTypeClientOp* iDeleteType;
williamr@2
   308
	CLogGetConfigClientOp* iGetConfig;
williamr@2
   309
	CLogChangeConfigClientOp* iChangeConfig;
williamr@2
   310
	CLogClearLogClientOp* iClearLog;
williamr@2
   311
	CLogClearRecentClientOp* iClearRecent;
williamr@2
   312
	RFs& iFs;
williamr@2
   313
	CLogClientObserver* iChangeObserver;
williamr@2
   314
	//
williamr@2
   315
private:
williamr@2
   316
	IMPORT_C void CLogBase_Reserved1();
williamr@2
   317
	};
williamr@2
   318
williamr@2
   319
#include <logcli.inl>
williamr@2
   320
williamr@2
   321
#endif