/*
* 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: Declaration of the class CLibraryEventHandler.
*
*/
#ifndef ANALYZETOOLEVENTHANDLER_H
#define ANALYZETOOLEVENTHANDLER_H
// INCLUDES
#include <e32cmn.h>
#include "codeblock.h"
#include <analyzetool/atstorageserverclnt.h>
#include <analyzetool/analyzetool.h>
// FORWARD DECLARATIONS
class MAnalyzeToolEventhandlerNotifier;
// CLASS DECLARATION
/**
* Class for receiving library load/unlaod events from the kernel
*/
class CLibraryEventHandler : public CActive
{
public:
/**
* C++ default constructor.
* @param aAnalyzeTool A reference to the <code>RAnalyzeTool</code>
which is used to observe kernel events
* @param aCodeblocks A reference to array of code segments
* @param aStorageServer A reference to the
* <code>RATStorageServer</code> which is
* used to store kernel events
* @param aProcessId A reference to the observed process id
* @param aMutex A reference to mutex to schedule access to the
* shared resources
* @param aNotifier A reference to notifier object which is used to
* inform killed threads
* @param aLogOption Current used log option on allocator.
*/
CLibraryEventHandler( RAnalyzeTool& aAnalyzeTool,
RArray<TCodeblock>& aCodeblocks,
RATStorageServer& aStorageServer,
TUint aProcessId,
RMutex& aMutex,
MAnalyzeToolEventhandlerNotifier& aNotifier,
TUint32 aLogOption );
/**
* Destructor.
*/
~CLibraryEventHandler();
/* Start receiving events from the kernel */
void Start();
/**
* Returns eventhandler's state.
* @return TBool ETrue if eventhandler is started, EFalse otherwise
*/
TBool IsStarted();
protected: // Functions from base classes
/**
* Process active object's task
*/
void RunL();
/**
* Cancels active object's task
*/
void DoCancel();
private: // Member variables
/* Handle to the analyze tool device driver*/
RAnalyzeTool& iAnalyzeTool;
/* A reference to codeblocks of the observed process */
RArray<TCodeblock>& iCodeblocks;
/* Handle to the storage server*/
RATStorageServer& iStorageServer;
/* The observered process id */
TUint iProcessId;
/* The library info */
TLibraryEventInfo iLibraryInfo;
/* The mutex for serializing access to the shared resources */
RMutex& iMutex;
/* Inform if handler is started */
TBool iStarted;
/* A reference to event handler notifier */
MAnalyzeToolEventhandlerNotifier& iNotifier;
/* Current used log option */
TUint32 iLogOption;
};
#endif // ANALYZETOOLEVENTHANDLER_H
// End of File