os/persistentdata/loggingservices/eventlogger/LogServ/src/LogServDatabaseDriver.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include <logclientchangeobserver.h>
sl@0
    17
#include "LogServDatabaseDriver.h"
sl@0
    18
#include "LOGMAIN.H"
sl@0
    19
#include "LOGADD.H"
sl@0
    20
#include "LOGCHNGE.H"
sl@0
    21
#include "LOGGET.H"
sl@0
    22
#include "LOGDEL.H"
sl@0
    23
#include "LOGQUERY.H"
sl@0
    24
#include "logservpanic.h"
sl@0
    25
#include "LogServCacheConfig.h"
sl@0
    26
#include "LogServCacheTypes.h"
sl@0
    27
#include "LogServBackupInterface.h"
sl@0
    28
#include "LogServViewWindowFetcher.h"
sl@0
    29
#include "LogServRecentListManager.h"
sl@0
    30
#include "LogServDatabaseTransactionInterface.h"
sl@0
    31
#include "LogServDatabaseChangeInterface.h"
sl@0
    32
#include "LogServSqlStrings.h"
sl@0
    33
sl@0
    34
sl@0
    35
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    36
// -----> CLogServDatabaseDriver (source)
sl@0
    37
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    38
sl@0
    39
CLogServDatabaseDriver::CLogServDatabaseDriver(MLogServBackupInterface& aBackupInterface, MLogServDatabaseTransactionInterface& aDatabase, CLogServResourceInterpreter& aResourceInterface, CLogServRecentListManager& aRecentListManager, TInt aHitterPriorities)
sl@0
    40
:	iHitterPriorities(aHitterPriorities), iBackupInterface(aBackupInterface), iDatabase(aDatabase), iResourceInterface(aResourceInterface), iRecentListManager(aRecentListManager)
sl@0
    41
	{
sl@0
    42
	}
sl@0
    43
sl@0
    44
CLogServDatabaseDriver::~CLogServDatabaseDriver()
sl@0
    45
	{
sl@0
    46
	iBackupInterface.BIObserverRemove(*this);
sl@0
    47
	DestroyHitters();
sl@0
    48
	}
sl@0
    49
sl@0
    50
void CLogServDatabaseDriver::ConstructL()
sl@0
    51
	{
sl@0
    52
	iBackupInterface.BIObserverAddL(*this, MLogServBackupInterface::EObjectDatabaseDriver);
sl@0
    53
	//
sl@0
    54
	CreateHittersL();
sl@0
    55
	}
sl@0
    56
sl@0
    57
CLogServDatabaseDriver* CLogServDatabaseDriver::NewL(MLogServBackupInterface& aBackupInterface, MLogServDatabaseTransactionInterface& aDatabase, CLogServResourceInterpreter& aResourceInterface, CLogServRecentListManager& aRecentListManager, TInt aHitterPriorities)
sl@0
    58
	{
sl@0
    59
	CLogServDatabaseDriver* self = new(ELeave) CLogServDatabaseDriver(aBackupInterface, aDatabase, aResourceInterface, aRecentListManager, aHitterPriorities);
sl@0
    60
	CleanupStack::PushL(self);
sl@0
    61
	self->ConstructL();
sl@0
    62
	CleanupStack::Pop(self);
sl@0
    63
	return self;
sl@0
    64
	}
sl@0
    65
sl@0
    66
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    67
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    68
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    69
sl@0
    70
void CLogServDatabaseDriver::BOHandleEventL(TLogServBackupEvent aEvent)
sl@0
    71
	{
sl@0
    72
	switch(aEvent)
sl@0
    73
		{
sl@0
    74
	case EBackupStarting:
sl@0
    75
		LOGTEXT("CLogServDatabaseDriver::BOHandleEventL() - Backup STARTING");
sl@0
    76
		DestroyHitters();
sl@0
    77
		break;
sl@0
    78
	case EBackupEnded:
sl@0
    79
		LOGTEXT("CLogServDatabaseDriver::BOHandleEventL() - Backup ENDING");
sl@0
    80
		CreateHittersL();
sl@0
    81
		break;
sl@0
    82
	default:
sl@0
    83
		__ASSERT_DEBUG(EFalse, User::Invariant());
sl@0
    84
		break;
sl@0
    85
		}
sl@0
    86
sl@0
    87
	LOGTEXT("CLogServDatabaseDriver::BOHandleEventL() - end");
sl@0
    88
	}
sl@0
    89
sl@0
    90
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    91
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    92
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
    93
sl@0
    94
void CLogServDatabaseDriver::TaskEventAddL(TRequestStatus& aStatus, CLogEvent& aEvent, const RMessage2& aMessage)
sl@0
    95
//
sl@0
    96
// Add an event to the database
sl@0
    97
//
sl@0
    98
	{
sl@0
    99
	LOGTEXT("CLogServDatabaseDriver::TaskEventAddL()");
sl@0
   100
sl@0
   101
	// Handle when we're doing a backup
sl@0
   102
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   103
sl@0
   104
	// Get the recent list for this event
sl@0
   105
	const CLogServRecentList* list = iRecentListManager.GetRecentList(aEvent);
sl@0
   106
sl@0
   107
	// Do the work
sl@0
   108
	iAddEvent->StartL(aEvent, list, aStatus, aMessage);
sl@0
   109
sl@0
   110
	LOGTEXT("CLogServDatabaseDriver::TaskEventAddL() - end");
sl@0
   111
	}
sl@0
   112
sl@0
   113
void CLogServDatabaseDriver::TaskEventChangeL(TRequestStatus& aStatus, const CLogEvent& aEvent, const RMessage2& aMessage)
sl@0
   114
//
sl@0
   115
// Change an event in the database
sl@0
   116
//
sl@0
   117
	{
sl@0
   118
	LOGTEXT("CLogServDatabaseDriver::TaskEventChangeL()");
sl@0
   119
sl@0
   120
	// Handle when we're doing a backup
sl@0
   121
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   122
sl@0
   123
	// Get the recent list for this event
sl@0
   124
	const CLogServRecentList* list = iRecentListManager.GetRecentList(aEvent);
sl@0
   125
	
sl@0
   126
	//
sl@0
   127
sl@0
   128
	// Do the work
sl@0
   129
	iChangeEvent->StartL(aEvent, list, aStatus, aMessage);
sl@0
   130
sl@0
   131
	LOGTEXT("CLogServDatabaseDriver::TaskEventChangeL() - end");
sl@0
   132
	}
sl@0
   133
sl@0
   134
void CLogServDatabaseDriver::TaskEventGetL(TRequestStatus& aStatus, CLogEvent& aEvent, const RMessage2& aMessage)
sl@0
   135
//
sl@0
   136
// Get an event from the database
sl@0
   137
//
sl@0
   138
	{
sl@0
   139
	LOGTEXT("CLogServDatabaseDriver::TaskEventGetL()");
sl@0
   140
sl@0
   141
	// Handle when we're doing a backup
sl@0
   142
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   143
sl@0
   144
	// Do the work
sl@0
   145
	iGetEvent->StartL(aEvent, aStatus, aMessage);
sl@0
   146
sl@0
   147
	LOGTEXT("CLogServDatabaseDriver::TaskEventGetL() - end");
sl@0
   148
	}
sl@0
   149
sl@0
   150
void CLogServDatabaseDriver::TaskEventDeleteL(TRequestStatus& aStatus, TLogId aId, const RMessage2& aMessage)
sl@0
   151
//
sl@0
   152
// Delete an event from the database
sl@0
   153
//
sl@0
   154
	{
sl@0
   155
	LOGTEXT("CLogServDatabaseDriver::TaskEventDeleteL()");
sl@0
   156
sl@0
   157
	// Handle when we're doing a backup
sl@0
   158
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   159
sl@0
   160
	iDeleteEvent->StartL(aId, aStatus, aMessage);
sl@0
   161
sl@0
   162
	LOGTEXT("CLogServDatabaseDriver::TaskEventDeleteL() - end");
sl@0
   163
	}
sl@0
   164
sl@0
   165
void CLogServDatabaseDriver::TaskEventTypeAddL(TRequestStatus& aStatus, const CLogEventType& aEventType)
sl@0
   166
	{
sl@0
   167
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeAddL()");
sl@0
   168
sl@0
   169
	// Handle when we're doing a backup
sl@0
   170
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   171
	iDatabase.DTICacheTypes().AddTypeL(aEventType);
sl@0
   172
	//
sl@0
   173
	TRequestStatus* status = &aStatus;
sl@0
   174
	User::RequestComplete(status, KErrNone);
sl@0
   175
sl@0
   176
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeAddL() - end");
sl@0
   177
	}
sl@0
   178
sl@0
   179
void CLogServDatabaseDriver::TaskEventTypeGetL(TRequestStatus& aStatus, const CLogEventType*& aEventType, TUid aUid)
sl@0
   180
	{
sl@0
   181
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeGetL()");
sl@0
   182
sl@0
   183
	// Handle when we're doing a backup
sl@0
   184
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   185
sl@0
   186
	const TLogServCacheTypeEntry& entry = iDatabase.DTICacheTypes().FindByUid(aUid);
sl@0
   187
	aEventType = entry.iEventType;
sl@0
   188
	if(entry.iEventTypeId == KLogNullTypeId)
sl@0
   189
		{
sl@0
   190
		User::Leave(KErrNotFound);
sl@0
   191
		}
sl@0
   192
sl@0
   193
	TRequestStatus* status = &aStatus;
sl@0
   194
	User::RequestComplete(status, KErrNone);
sl@0
   195
sl@0
   196
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeGetL() - end");
sl@0
   197
	}
sl@0
   198
sl@0
   199
void CLogServDatabaseDriver::TaskEventTypeChangeL(TRequestStatus& aStatus, const CLogEventType& aEventType)
sl@0
   200
	{
sl@0
   201
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeChangeL()");
sl@0
   202
sl@0
   203
	// Handle when we're doing a backup
sl@0
   204
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   205
	const TInt error = iDatabase.DTICacheTypes().ChangeType(aEventType);
sl@0
   206
	//
sl@0
   207
	TRequestStatus* status = &aStatus;
sl@0
   208
	User::RequestComplete(status, error);
sl@0
   209
sl@0
   210
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeChangeL() - end");
sl@0
   211
	}
sl@0
   212
sl@0
   213
void CLogServDatabaseDriver::TaskEventTypeDeleteL(TRequestStatus& aStatus, TUid aType)
sl@0
   214
	{
sl@0
   215
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeDeleteL()");
sl@0
   216
sl@0
   217
	// Handle when we're doing a backup
sl@0
   218
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   219
	const TInt error = iDatabase.DTICacheTypes().DeleteType(aType);
sl@0
   220
	//
sl@0
   221
	TRequestStatus* status = &aStatus;
sl@0
   222
	User::RequestComplete(status, error);
sl@0
   223
sl@0
   224
	LOGTEXT("CLogServDatabaseDriver::TaskEventTypeDeleteL() - end");
sl@0
   225
	}
sl@0
   226
sl@0
   227
void CLogServDatabaseDriver::TaskConfigGetL(TRequestStatus& aStatus, TLogConfig& aConfig)
sl@0
   228
	{
sl@0
   229
	LOGTEXT("CLogServDatabaseDriver::TaskConfigGetL()");
sl@0
   230
sl@0
   231
	// Handle when we're doing a backup
sl@0
   232
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   233
	aConfig = iDatabase.DTICacheConfig().Config();
sl@0
   234
	//
sl@0
   235
	TRequestStatus* status = &aStatus;
sl@0
   236
	User::RequestComplete(status, KErrNone);
sl@0
   237
sl@0
   238
	LOGTEXT("CLogServDatabaseDriver::TaskConfigGetL() - end");
sl@0
   239
	}
sl@0
   240
sl@0
   241
void CLogServDatabaseDriver::TaskConfigChangeL(TRequestStatus& aStatus, const TLogConfig& aConfig)
sl@0
   242
	{
sl@0
   243
	LOGTEXT("CLogServDatabaseDriver::TaskConfigChangeL()");
sl@0
   244
sl@0
   245
	// Handle when we're doing a backup
sl@0
   246
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   247
sl@0
   248
	iChangeConfig->StartL(aConfig, aStatus);
sl@0
   249
sl@0
   250
	LOGTEXT("CLogServDatabaseDriver::TaskConfigChangeL() - end");
sl@0
   251
	}
sl@0
   252
sl@0
   253
// aDate is expected to be UTC
sl@0
   254
void CLogServDatabaseDriver::TaskClearLogL(TRequestStatus& aStatus, const TTime& aDate
sl@0
   255
#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
sl@0
   256
		, TSimId aSimId
sl@0
   257
#endif		
sl@0
   258
		)
sl@0
   259
	{
sl@0
   260
	LOGTEXT("CLogServDatabaseDriver::TaskClearLogL()");
sl@0
   261
sl@0
   262
	// Handle when we're doing a backup
sl@0
   263
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   264
sl@0
   265
	// Format the date.
sl@0
   266
	TBuf<KLogMaxDateLength> dateString;
sl@0
   267
	aDate.FormatL(dateString, LogUtils::DateFormatForLocale());
sl@0
   268
	// Get list of events to purge
sl@0
   269
	TheSql.Format(KLogSqlDeleteOldestString, &dateString);
sl@0
   270
#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
sl@0
   271
	if(aSimId != KLogNullSimId)
sl@0
   272
		{
sl@0
   273
		TheSql.Append(KLogAnd);
sl@0
   274
		TheSql.AppendFormat(KLogUNumberPredicate, &KLogFieldEventSimId, aSimId);
sl@0
   275
		}
sl@0
   276
#endif	
sl@0
   277
	iDatabase.DTIBeginWithRollBackProtectionLC();
sl@0
   278
	TInt rc = iDatabase.DTIExecuteSql(TheSql);
sl@0
   279
	User::LeaveIfError(rc);
sl@0
   280
	if(rc > 0)
sl@0
   281
	    {
sl@0
   282
		// Add log cleared events. First is for the window code, which receives messages
sl@0
   283
		// through the old API. The 2nd is for clients of the log engine
sl@0
   284
		iDatabase.DTIChangeInterface().DCISubmitChangedEventContextL(ELogChangeTypeLogCleared, KLogNullId);
sl@0
   285
		iDatabase.DTIChangeInterface().DCISubmitGlobalChangeContextL(KLogClientChangeEventLogCleared);
sl@0
   286
		}
sl@0
   287
	iDatabase.DTICommitAndCancelRollbackProtectionL();
sl@0
   288
	// Complete the request
sl@0
   289
	TRequestStatus* status = &aStatus;
sl@0
   290
	User::RequestComplete(status, KErrNone);
sl@0
   291
sl@0
   292
	LOGTEXT("CLogServDatabaseDriver::TaskClearLogL() - end");
sl@0
   293
	}
sl@0
   294
sl@0
   295
void CLogServDatabaseDriver::TaskClearRecentL(TRequestStatus& aStatus, TInt aRecentList
sl@0
   296
#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
sl@0
   297
		, TSimId aSimId
sl@0
   298
#endif		
sl@0
   299
		)
sl@0
   300
	{
sl@0
   301
	LOGTEXT("CLogServDatabaseDriver::TaskClearRecentL()");
sl@0
   302
sl@0
   303
	// Handle when we're doing a backup
sl@0
   304
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   305
sl@0
   306
	TheSql.Copy(KLogSqlSelectAllRecent);
sl@0
   307
#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
sl@0
   308
	TBool whereAdded = EFalse;
sl@0
   309
#endif	
sl@0
   310
	// Get events to clear from recent lists
sl@0
   311
	if(aRecentList != KLogNullRecentList)
sl@0
   312
		{
sl@0
   313
		TheSql.Append(KLogWhere);
sl@0
   314
#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
sl@0
   315
		whereAdded = ETrue;
sl@0
   316
#endif		
sl@0
   317
		TheSql.AppendFormat(KLogNumberPredicate, &KLogFieldEventRecentString, aRecentList);
sl@0
   318
		}
sl@0
   319
#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
sl@0
   320
	//..and clear from recent lists with specific SimId
sl@0
   321
	if(aSimId != KLogNullSimId)
sl@0
   322
		{
sl@0
   323
		if(whereAdded)
sl@0
   324
			{
sl@0
   325
			TheSql.Append(KLogAnd);
sl@0
   326
			}
sl@0
   327
		else
sl@0
   328
			{
sl@0
   329
			TheSql.Append(KLogWhere);
sl@0
   330
			}
sl@0
   331
		TheSql.AppendFormat(KLogUNumberPredicate, &KLogFieldEventSimId, aSimId);
sl@0
   332
		}
sl@0
   333
#endif	
sl@0
   334
	
sl@0
   335
    RLogDbView view;
sl@0
   336
    view.PrepareLC(iDatabase.DTIDatabase(), TheSql);
sl@0
   337
	
sl@0
   338
	if(view.FirstL())
sl@0
   339
		{
sl@0
   340
        static TDbColNo colId = 0;
sl@0
   341
        static TDbColNo colRecent = 0;
sl@0
   342
        static TDbColNo colDuplicate = 0;
sl@0
   343
        if(colId == 0)
sl@0
   344
            {
sl@0
   345
            CDbColSet* cs = view.ColSetL();
sl@0
   346
            colId = cs->ColNo(KLogFieldIdString);
sl@0
   347
            colRecent = cs->ColNo(KLogFieldEventRecentString);
sl@0
   348
            colDuplicate = cs->ColNo(KLogFieldEventDuplicateString);
sl@0
   349
            delete cs;
sl@0
   350
            }
sl@0
   351
		iDatabase.DTIBeginWithRollBackProtectionLC();
sl@0
   352
		// Iterate through the events
sl@0
   353
		do
sl@0
   354
			{
sl@0
   355
			// Get current event id
sl@0
   356
			view.GetL();
sl@0
   357
			const TLogId id = view.ColInt32(colId);
sl@0
   358
			// Make the change
sl@0
   359
			view.UpdateL();
sl@0
   360
			view.SetColNullL(colRecent);
sl@0
   361
			view.SetColNullL(colDuplicate);
sl@0
   362
			view.PutL();
sl@0
   363
			// This is a "hidden" change. It may affect the contents of a view, but the actual event hasn't changed
sl@0
   364
			iDatabase.DTIChangeInterface().DCISubmitChangedEventContextL(ELogChangeTypeEventChangedHidden, id);
sl@0
   365
			}
sl@0
   366
		while(view.NextL());
sl@0
   367
		iDatabase.DTICommitAndCancelRollbackProtectionL();
sl@0
   368
		}
sl@0
   369
    CleanupStack::PopAndDestroy(&view);
sl@0
   370
sl@0
   371
	// Complete the request
sl@0
   372
	TRequestStatus* status = &aStatus;
sl@0
   373
	User::RequestComplete(status, KErrNone);
sl@0
   374
sl@0
   375
	LOGTEXT("CLogServDatabaseDriver::TaskClearRecentL() - end");
sl@0
   376
	}
sl@0
   377
sl@0
   378
void CLogServDatabaseDriver::TaskMaintenanceStartL(TRequestStatus& aStatus, TBool aPurge)
sl@0
   379
//
sl@0
   380
//	Start database maintenance process
sl@0
   381
//
sl@0
   382
	{
sl@0
   383
	LOGTEXT("CLogServDatabaseDriver::TaskMaintenanceStartL()");
sl@0
   384
sl@0
   385
	// Handle when we're doing a backup
sl@0
   386
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   387
sl@0
   388
	iMaintainer->Start(aPurge, aStatus);
sl@0
   389
sl@0
   390
	LOGTEXT("CLogServDatabaseDriver::TaskMaintenanceStartL() - end");
sl@0
   391
	}
sl@0
   392
sl@0
   393
void CLogServDatabaseDriver::TaskBuildWindowL(TRequestStatus& aStatus, const CLogServViewBase& aView, const TLogTransferWindow& aWindow, const RMessage2& aMessage)
sl@0
   394
//
sl@0
   395
//	Build a client window
sl@0
   396
//
sl@0
   397
	{
sl@0
   398
	LOGTEXT("CLogServDatabaseDriver::TaskBuildWindowL()");
sl@0
   399
sl@0
   400
	// Handle when we're doing a backup
sl@0
   401
	iBackupInterface.BIValidateStateForDatabaseOperationL();
sl@0
   402
sl@0
   403
	iWindowFetcher->StartL(aStatus, aView, aWindow, aMessage); 
sl@0
   404
sl@0
   405
	LOGTEXT("CLogServDatabaseDriver::TaskBuildWindowL() - end");
sl@0
   406
	}
sl@0
   407
sl@0
   408
void CLogServDatabaseDriver::TaskCancelCurrent()
sl@0
   409
//
sl@0
   410
//	Cancel all active tasks
sl@0
   411
//
sl@0
   412
	{
sl@0
   413
	LOGTEXT("CLogServDatabaseDriver::TaskCancelCurrent()");
sl@0
   414
sl@0
   415
	if	(iAddEvent)
sl@0
   416
		iAddEvent->Cancel();
sl@0
   417
	if	(iChangeEvent)
sl@0
   418
		iChangeEvent->Cancel();
sl@0
   419
	if	(iGetEvent)
sl@0
   420
		iGetEvent->Cancel();
sl@0
   421
	if	(iDeleteEvent)
sl@0
   422
		iDeleteEvent->Cancel();
sl@0
   423
	if	(iChangeConfig)
sl@0
   424
		iChangeConfig->Cancel();
sl@0
   425
	if	(iWindowFetcher)
sl@0
   426
		iWindowFetcher->Cancel();
sl@0
   427
sl@0
   428
	LOGTEXT("CLogServDatabaseDriver::TaskCancelCurrent() - end");
sl@0
   429
	}
sl@0
   430
sl@0
   431
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
   432
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
   433
/////////////////////////////////////////////////////////////////////////////////////////
sl@0
   434
sl@0
   435
void CLogServDatabaseDriver::DestroyHitters()
sl@0
   436
	{
sl@0
   437
	LOGTEXT("CLogServDatabaseDriver::DestroyHitters()");
sl@0
   438
sl@0
   439
	TaskCancelCurrent();
sl@0
   440
	//
sl@0
   441
	delete iMaintainer;
sl@0
   442
	iMaintainer = NULL;
sl@0
   443
	delete iAddEvent;
sl@0
   444
	iAddEvent = NULL;
sl@0
   445
	delete iChangeEvent;
sl@0
   446
	iChangeEvent = NULL;
sl@0
   447
	delete iGetEvent;
sl@0
   448
	iGetEvent = NULL;
sl@0
   449
	delete iDeleteEvent;
sl@0
   450
	iDeleteEvent = NULL;
sl@0
   451
	delete iChangeConfig;
sl@0
   452
	iChangeConfig = NULL;
sl@0
   453
	delete iWindowFetcher;
sl@0
   454
	iWindowFetcher = NULL;
sl@0
   455
sl@0
   456
	LOGTEXT("CLogServDatabaseDriver::DestroyHitters() - end");
sl@0
   457
	}
sl@0
   458
sl@0
   459
void CLogServDatabaseDriver::CreateHittersL()
sl@0
   460
	{
sl@0
   461
	LOGTEXT("CLogServDatabaseDriver::CreateHittersL()");
sl@0
   462
sl@0
   463
	iMaintainer = CLogMaintenance::NewL(iDatabase, iHitterPriorities);
sl@0
   464
	iAddEvent = CLogAddEvent::NewL(iDatabase, iHitterPriorities);
sl@0
   465
	iChangeEvent = CLogChangeEvent::NewL(iDatabase, iHitterPriorities);
sl@0
   466
	iGetEvent = CLogGetEvent::NewL(iDatabase, iHitterPriorities);
sl@0
   467
	iDeleteEvent = CLogDeleteEvent::NewL(iDatabase, iHitterPriorities);
sl@0
   468
	iChangeConfig = CLogChangeConfig::NewL(iDatabase, iRecentListManager, iHitterPriorities);
sl@0
   469
	iWindowFetcher = CLogServViewWindowFetcher::NewL(iDatabase, iHitterPriorities);
sl@0
   470
sl@0
   471
	LOGTEXT("CLogServDatabaseDriver::CreateHittersL() - end");
sl@0
   472
	}