diff -r a151135b0cf9 -r aa2539c91954 tracesrv/tracecore/btrace_handler/inc/TraceCore.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tracesrv/tracecore/btrace_handler/inc/TraceCore.h Fri Oct 08 14:56:39 2010 +0300 @@ -0,0 +1,346 @@ +// Copyright (c) 2007-2010 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: +// Trace Core +// + +#ifndef __TRACECORE_H__ +#define __TRACECORE_H__ + + +// Include files +#include +#include "TraceCoreWriter.h" + + +// Forward declarations +class DTraceCoreSendReceive; +class DTraceCoreNotifier; +class DTraceCoreConfiguration; +class DTraceCoreInternalMessageHandler; +class DTraceCoreRouter; +class DTraceCoreHandler; +class DTraceCoreBTraceHandler; +class DTraceCorePrintfTraceHandler; +class DTraceCoreSettings; +class MTraceCoreActivation; + + +/** + * TraceCore main class + */ +NONSHARABLE_CLASS( DTraceCore ) : public DBase + { +public: + + /** + * Gets the TraceCore instance. + * NULL is returned when no instance is created. + */ + IMPORT_C static DTraceCore* GetInstance(); + + /** + * Returns ETrue if tracecore is loaded already EFalse otherwies + */ + IMPORT_C static TBool IsLoaded(); + + /* + * Destroy the static instance of tracecore and sets the instance to null + */ + IMPORT_C static void DestroyTraceCore(); + /** + * Gets the BTrace handler + */ + static DTraceCoreBTraceHandler* GetBTraceHandler(); + + /** + * Gets the router + */ + inline DTraceCoreRouter& GetRouter(); + + /** + * Gets the send-receive interface + */ + inline DTraceCoreSendReceive& GetSendReceive(); + + /** + * Gets the trace core notifier + */ + inline DTraceCoreNotifier& GetNotifier(); + + /** + * Registers a handler to TraceCore. + * + * @param aHandler The handler to be registered + */ + TInt RegisterHandler( DTraceCoreHandler& aHandler ); + + /** + * Unregisters a handler from TraceCore. + * + * @param aHandler The handler to be unregistered + */ + void UnregisterHandler( DTraceCoreHandler& aHandler ); + + /** + * Registers a writer to TraceCore. + * + * @param aWriter The writer to be registered + */ + TInt RegisterWriter( DTraceCoreWriter& aWriter ); + + /** + * Unregisters a writer from TraceCore. + * + * @param aWriter The writer to be unregistered + */ + void UnregisterWriter( DTraceCoreWriter& aWriter ); + + /** + * Registers a settings saver to TraceCore. + * + * @param aSettings The settings (saver) to be registered + */ + TInt RegisterSettings( DTraceCoreSettings& aSettings ); + + /** + * Unregisters a settings saver from TraceCore. + * + * @param aSettings The Settings to be unregistered + */ + void UnregisterSettings( DTraceCoreSettings& aSettings ); + + /** + * Registers an activation interface + * + * @param aActivation The activation interface + */ + TInt RegisterActivation( MTraceCoreActivation& aActivation ); + + /** + * Gets an activation interface for a specific component ID + * + * @param aComponentID The component ID + * @return The activation interface or NULL if none exist + */ + MTraceCoreActivation* GetActivation( TUint32 aComponentID ); + + /** + * Starts to use the specific writer + * + * @return KErrNone if successful, KErrNotSupported if type is not valid + */ + IMPORT_C TInt SwitchToWriter( TWriterType aWriterType ); + + /** + * Get current writer type + * + * @return Current writer type + */ + IMPORT_C TInt GetCurrentWriterType(); + + + /** + * Returns pointer to TraceCore owned activation / deactivation TDfcQue object. + */ + inline TDynamicDfcQue* ActivationQ() { + return iActivationQ; + } + + /** + * Static method that returns pointer to TraceCore activation / deactivation dfc queue. + */ + static TDynamicDfcQue* GetActivationQ() { + DTraceCore* tCore = DTraceCore::GetInstance(); + if(tCore) + return tCore->ActivationQ(); + else + return NULL; + } + + + + /** + * @internalTechnology + * Sets the "Trace Dropped" flag + * @param aTraceDropped ETrue if Trace Dropped, EFalse Otherwise + */ + IMPORT_C void SetPreviousTraceDropped(TBool aTraceDropped); + + /** + * @internalTechnology + * returns the state of the "Trace Dropped" flag + * @param none + */ + IMPORT_C TBool PreviousTraceDropped() const; + + /** + * @internalTechnology + * @return DTraceCore instance or NULL if creation failed. + */ + IMPORT_C static DTraceCore* CreateInstance(); + + /** + * Reactivate all currently activated traces + * @param none + * @return KErrNone if refresh successful + */ + TInt RefreshActivations(); + + /** + * Returns whether or not tracing is certified. + * The certification status is checked when TraceCore is initialised and then stored for later use. + * This stored value is used throughout the session, even if the status of the certificate changes. + * This is done to avoid performance issues when performing the check with every trace outputted. + * @param none + * @return ETrue if tracing is certified, EFalse otherwise + */ + inline TBool IsTraceCertified() { return iTraceCertified; }; + + /** + * Get the active writer + * @param none + * @return a pointer to the current + */ + IMPORT_C DTraceCoreWriter* GetActiveWriter(); + +private: + + /** + * Constructor + */ + DTraceCore(); + + /** + * Destructor + */ + ~DTraceCore(); + + /** + * Initializes trace core + */ + TInt Init(); + + /** + * Starts the BTrace handler + */ + TInt StartBTrace(); + + /** + * Starts the Printf trace handler + */ + TInt StartPrintfTraceHandler(); + + /** + * Starts to use the first writer from the writers list + */ + void SwitchToFirstWriter(); + + /** + * Forwards the active writer to handlers + */ + void SetWriterToHandlers(); + +private: + + /** + * TraceCore instance + */ + static DTraceCore* iInstance; + + /** + * List of writers + */ + RPointerArray< DTraceCoreWriter > iWriters; + + /** + * List of handlers + */ + RPointerArray< DTraceCoreHandler > iHandlers; + + /** + * List of activation interfaces + */ + RPointerArray< MTraceCoreActivation > iActivations; + + /** + * Message router + */ + DTraceCoreRouter* iRouter; + + /** + * Message sender / receiver + */ + DTraceCoreSendReceive* iSendReceive; + + /** + * Activation notifier + */ + DTraceCoreNotifier* iNotifier; + + /** + * Configuration + */ + DTraceCoreConfiguration* iConfiguration; + + /** + * Internal message handler + */ + DTraceCoreInternalMessageHandler* iInternalMessageHandler; + + + /** + * BTrace handler + */ + DTraceCoreBTraceHandler* iBTrace; + + /** + * Printf trace handler + */ + DTraceCorePrintfTraceHandler* iPrintf; + + /** + * TraceCore settings + */ + DTraceCoreSettings* iTraceCoreSettings; + + /** + * Writer that is currently active + */ + DTraceCoreWriter* iActiveWriter; + + /** + * Activation / Deactivation DFC queue. + */ + TDynamicDfcQue* iActivationQ; + + /** + * Previous missing trace flag + */ + TBool iPreviousTraceDropped; + + /** + * Trace certified flag. + * The certification status is checked when TraceCore is initialised and then stored in this variable. + * This stored value is used throughout the session, even if the status of the certificate changes. + * This is done to avoid performance issues when performing the check with every trace outputted. + */ + TBool iTraceCertified; + + }; + +#endif + +#include "TraceCore.inl" + +// End of File