diff -r 000000000000 -r 08ec8eefde2f traceservices/tracefw/ulogger/inc/uloggeroutputplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traceservices/tracefw/ulogger/inc/uloggeroutputplugin.h Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,95 @@ +// Copyright (c) 2007-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: +// ULogger output plug-in interface +// +// + +/** + @file + @publishedPartner + @prototype +*/ + +#ifndef ULOGGEROUTPUTPLUGIN_H +#define ULOGGEROUTPUTPLUGIN_H + +#include +#include "uloggerplugin.h" +#include "uloggerdatatypes.h" + +namespace Ulogger +{ + +//! Abstract class for ULogger output plug-ins. +/*! +A ULogger output plug-in is responsible for writing Trace log data to some +output medium. Examples for output media are files, serial ports or TCP sockets. +Whenever ULogger needs to output Trace log data, it passes this to the currently +selected output plug-in, which then handles the actual writing to an output +medium. + +All output plug-ins must derive from this class in order to be compatible with +ULogger. They must also derive from ULogger::CPlugin (whose header is already +included by this header, for convenience) in order to be compatible with the +ECom framework, which ULogger uses to load its output plug-ins. +*/ +class MOutputPlugin + { +public: + /** + Writes the given data to the output media that is represented by the + plug-in implementation. This method is called by ULogger whenever Trace log + data becomes available. How much data is passed to this function depends + on how ULogger is configured; the length of the given descriptor + indicates the size of the data packet. The intervals at which + this method is called depends on the amount of Trace data that is logged + from code in the currently running processes. + + @param aData the Trace data to output, in BTrace format + @return KErrNone, if successful; otherwise one of the other system wide + error codes. + */ + virtual TInt Write(const TDesC8& aData) = 0; + + /** + Called by ULogger as first method after construction or after changes in + config file. This allows the output plug-in to initialize itself with its + private settings. + + @param aConfigs actual configurations valid for this instance + @return KErrNone, if successful; otherwise one of the other system wide + error codes. + */ + virtual TInt ConfigureOutputPlugin(const RPointerArray& aConfigs) = 0; + + /** + Called by ULogger to indicate that the output plug-in must flush all buffers + and release any locked resources. Any resources may be locked only after any + other method is called. + */ + virtual void CloseOutputPlugin() = 0; + + /** Virtual destructor. */ + virtual ~MOutputPlugin(){} + + /** + Output plug-in interface id. This is for ULogger to distinguish between the + different types of plug-ins (e.g. Output vs Input plug-ins). + */ + static const CPlugin::TPluginInterface iInterfaceId = CPlugin::EOutput; + }; + +} //end of namespace + +#endif // ULOGGEROUTPUTPLUGIN_H