diff -r a151135b0cf9 -r aa2539c91954 tracesrv/tracecore/btrace_handler/src/BTraceCategoryHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tracesrv/tracecore/btrace_handler/src/BTraceCategoryHandler.cpp Fri Oct 08 14:56:39 2010 +0300 @@ -0,0 +1,141 @@ +// 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 +// + +#include "BTraceCategoryHandler.h" +#include "TraceCore.h" +#include "TraceCoreBTraceHandler.h" +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "BTraceCategoryHandlerTraces.h" +#endif + + + +/** + * Constructor + */ +EXPORT_C DBTraceCategoryHandler::DBTraceCategoryHandler() +: iWriter( NULL ) +, iSettings( NULL ) + { + } + + +/** + * Destructor + */ +EXPORT_C DBTraceCategoryHandler::~DBTraceCategoryHandler() + { + Unregister(); + iCategories.Close(); + } + + +/** + * Called before SetWriter with interrupts enabled + * + * @param aWriter The new writer + */ +EXPORT_C void DBTraceCategoryHandler::PrepareSetWriter( DTraceCoreWriter* /*aWriter*/ ) + { + } + + +/** + * Sets active writer + * + * @param aWriter The new writer + */ +EXPORT_C void DBTraceCategoryHandler::SetWriter( DTraceCoreWriter* aWriter ) + { + iWriter = aWriter; + } + + +/** + * Sets settings saver + * + * @param aSettings Settings saver + */ +EXPORT_C void DBTraceCategoryHandler::SetSettings( DTraceCoreSettings* aSettings ) + { + iSettings = aSettings; + } + + +/** + * Adds a category to be registered + * + * @param aCategory The category + */ +EXPORT_C TInt DBTraceCategoryHandler::AddCategory( TUint8 aCategory ) + { + OstTrace1( TRACE_BORDER, DBTRACECATEGORYHANDLER_ADDCATEGORY_ENTRY, "> DBTraceCategoryHandler::AddCategory 0x%x", aCategory ); + TInt ret = iCategories.Append( aCategory ); + OstTrace1( TRACE_BORDER, DBTRACECATEGORYHANDLER_ADDCATEGORY_EXIT, "< DBTraceCategoryHandler::AddCategory. Ret:%d", ret ); + return ret; + } + + +/** + * Registers this handler to BTrace + */ +EXPORT_C TInt DBTraceCategoryHandler::Register() + { + TInt ret = KErrNone; + + // Get BTrace handler + DTraceCoreBTraceHandler* handler = DTraceCore::GetBTraceHandler(); + if ( handler != NULL ) + { + // Loop through all categories + for ( TInt i = 0; i < iCategories.Count(); i++ ) + { + handler->RegisterCategoryHandler( iCategories[ i ], *this ); + } + ret = KErrNone; + } + else + { + ret = KErrGeneral; + } + OstTrace1( TRACE_BORDER, DBTRACECATEGORYHANDLER_REGISTER_EXIT, "< DBTraceCategoryHandler::Register. Ret:%d", ret ); + + return ret; + } + + +/** + * Unregisters this handler from BTrace + */ +void DBTraceCategoryHandler::Unregister() + { + OstTrace0( TRACE_FLOW, DBTRACECATEGORYHANDLER_UNREGISTER_ENTRY, "> DBTraceCategoryHandler::Unregister"); + // Get BTrace handler + DTraceCoreBTraceHandler* handler = DTraceCore::GetBTraceHandler(); + if ( handler != NULL ) + { + + // Loop through all categories + for ( TInt i = 0; i < iCategories.Count(); i++ ) + { + handler->UnregisterCategoryHandler( iCategories[ i ] ); + } + } + } + + +// End of File