sysanadatacapture/piprofiler/piprofiler/plugins/DebugOutputWriterPlugin/inc/DebOutWriterPlugin.h
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:52:57 +0200
changeset 1 3ff3fecb12fe
permissions -rw-r--r--
Add initial version of PI Profiler under EPL

/*
* 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:  
*
*/


// This file defines the API for DebOutWriterPlugin.dll

#ifndef __DEBOUTWRITERPLUGIN_H__
#define __DEBOUTWRITERPLUGIN_H__

//  Include Files
#include <w32std.h>
#include <StringLoader.h>

#include <piprofiler/WriterPluginInterface.h>
#include <piprofiler/ProfilerGenericClassesUsr.h>
#include <e32base.h>	// CBase
#include <e32std.h>	 // TBuf
#include <e32property.h>

_LIT(KDebOutShortName, "dow");

// forward declarations
class CDebOutWriterHandler;

//  Class Definitions

class CDebOutWriterPlugin : public CWriterPluginInterface
	{
public:
	// new function
	static CDebOutWriterPlugin* NewL(const TUid aImplementationUid, TAny* /*aInitParams*/);
	~CDebOutWriterPlugin();

	void	DoCancel();
	static void 	PrintDescriptorAsBase64(TDesC8& aDes, TRequestStatus* aStatus, TUint32 sampleTime, TBool aEmptying);

public: // new functions

	TInt 	Start();

	void 	Stop();

	void 	GetCaption( TDes& aCaption ) const;
    
	void 	GetValue( const TWriterPluginValueKeys aKey, TDes& aValue );
	
	void 	SetValue( const TWriterPluginValueKeys aKey, TDes& aValue ); 
    
	TUid 	Id() const;
		 
	void 	GetWriterVersion(TDes* aDes);
	
	TUint32 GetWriterType();
	
	void    SetStream(CProfilerSampleStream& aStream) { iStream = &aStream; }
	
	void   HandleError(TInt aError);
	   
	void   WriteData();
private: // new functions
	CDebOutWriterPlugin(const TUid aImplementationUid);
	void 	ConstructL();
	
	void 	GetValueL( const TWriterPluginValueKeys aKey, TDes& aValue );
	void 	SetValueL( const TWriterPluginValueKeys aKey, TDes& aValue );
	TBool	GetEnabled();
public:
    CProfilerSampleStream*          iStream;
private: // data
	TBapBuf*						iBufferBeingWritten;
	
	TInt 							iWriterType;
	TInt							iWriterId;
	CDebOutWriterHandler*			iWriterHandler;
	RProperty                       iErrorStatus;
	};

/*
 * 
 * Definition of class CDebOutWriterHandler
 * 
 */
class CDebOutWriterHandler : public CActive
	{
public:
 

	static CDebOutWriterHandler* NewL(CDebOutWriterPlugin* aWriter);
	~CDebOutWriterHandler();
    void DoCancel();
	void StartL();

	void Stop();
    
    void Reset();
private:
	CDebOutWriterHandler(CDebOutWriterPlugin* aWriter); 
	
	void ConstructL();
    void RunL();
    
	void WriteBufferToOutput(TBapBuf* aBuf);
	void PrintBufferToOutput(TBapBuf* aBuffer, TRequestStatus& aStatus);
	void HandleFullBuffers();
private:
	CDebOutWriterPlugin* 			iWriter;
    RFile                           iFile;
    RFs                             iFs;
    TBuf<256>                       iFileName;
//  CPeriodic*                      iTimer;
    TBapBuf*                        iBufferBeingWritten;
    TBool                           iStopping;
	};

#endif  // __DEBOUTWRITERPLUGIN_H__