perfsrv/piprofiler/plugins/DiskWriterPlugin/inc/DiskWriterPlugin.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 17 Sep 2010 08:38:31 +0300
changeset 48 516af714ebb4
permissions -rw-r--r--
Revision: 201037 Kit: 201037

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


#ifndef __DISKWRITERPLUGIN_H__
#define __DISKWRITERPLUGIN_H__

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

_LIT(KFileOutShortName, "dsw");

// forward declarations
class CDiskWriterHandler;
class CProfilerSampleStream;

//  Class Definitions

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

	void	DoCancel();

	
public: // new functions
	
	TInt 	Start();

	void 	Stop();
    
	void 	GetValue( const TWriterPluginValueKeys aKey, TDes& aValue );
	
	void 	SetValue( const TWriterPluginValueKeys aKey, TDes& aValue ); 
    
	TUid 	Id() const;
		 
	void 	GetWriterVersion(TDes* aDes);
	
	TUint32 GetWriterType();

	void   HandleError(TInt aError);
	
	void   WriteData();
	
	void   SetStream(CProfilerSampleStream& aStream) { iStream = &aStream; }
	
private: // new functions
	CDiskWriterPlugin(const TUid aImplementationUid);
	void 	ConstructL();

	void 	GetValueL( const TWriterPluginValueKeys aKey, TDes& aValue );
	void 	SetValueL( const TWriterPluginValueKeys aKey, TDes& aValue );
    TBool   GetEnabled();
	
	TInt   DisplayNotifier(const TDesC& aLine1, const TDesC& aLine2, const TDesC& aButton1, const TDesC& aButton2);
public: 
    CProfilerSampleStream*          iStream;
private: // data

    TBuf<256>                       iFileName;
	TInt 							iWriterType;
	TInt							iWriterId;
	CDiskWriterHandler*				iWriterHandler;
	RProperty                       iErrorStatus;
	};

/*
 * 
 * Definition of class CDiskWriterHandler
 * 
 */
class CDiskWriterHandler : public CActive //CBase
	{
public:
 

	static CDiskWriterHandler* NewL(CDiskWriterPlugin* aWriter);
	~CDiskWriterHandler();

	void StartL();

	void Stop();
	void RunL();
	TInt RunError(TInt aError);
	
	void DoCancel();
	void WriteBufferToOutput(TBapBuf* aBuf);
	void Reset();
	   
    TInt TestFile(const TDesC& totalPrefix);
private:
	CDiskWriterHandler(CDiskWriterPlugin* aWriter); 
	
	void ConstructL();
    void WriteMemBufferToFile(TDesC8& aDes, TRequestStatus& aStatus);
	static TInt Write(TAny* aObject);
	void HandleFullBuffers();
	void DoWrite();
	
private:
    RFile                           iFile;
    RFs                             iFs;
    TBuf<256>                       iFileName;
	CDiskWriterPlugin* 				iWriter;
    TBapBuf*                        iBufferBeingWritten;
    TBool                           iStopping;
	};

#endif  // __DEBOUTWRITERPLUGIN_H__