piprofiler/engine/inc/WriterController.h
author hgs
Fri, 27 Aug 2010 11:37:29 +0300
changeset 42 0ff24a8f6ca2
parent 20 a71a3e32a2ae
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __WRITERCONTROLLER_H__
hgs
parents:
diff changeset
    20
#define __WRITERCONTROLLER_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// system includes
hgs
parents:
diff changeset
    23
#include <utf.h>
hgs
parents:
diff changeset
    24
#include <e32cmn.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// The user-interface to the sampling device driver sued by the profiling engine
hgs
parents:
diff changeset
    28
// user includes
hgs
parents:
diff changeset
    29
#include <piprofiler/ProfilerConfig.h>
hgs
parents:
diff changeset
    30
#include <piprofiler/ProfilerVersion.h>
hgs
parents:
diff changeset
    31
#include <piprofiler/WriterPluginInterface.h>
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include "WriterPluginLoader.h"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/*
hgs
parents:
diff changeset
    36
 *	Forward declarations
hgs
parents:
diff changeset
    37
 */
hgs
parents:
diff changeset
    38
class TBapBuf;
hgs
parents:
diff changeset
    39
class CWriterPluginLoader;
hgs
parents:
diff changeset
    40
class CWriterPluginInterface;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
/**
hgs
parents:
diff changeset
    43
 * The writer controller for handling the available Data writer plugins.
hgs
parents:
diff changeset
    44
 */
hgs
parents:
diff changeset
    45
  
hgs
parents:
diff changeset
    46
class CWriterController : public CBase, MWriterPluginLoadObserver
hgs
parents:
diff changeset
    47
	{
hgs
parents:
diff changeset
    48
	
hgs
parents:
diff changeset
    49
public:
hgs
parents:
diff changeset
    50
	static CWriterController* NewL(CProfilerSampleStream& aStream);
hgs
parents:
diff changeset
    51
	void ConstructL();
hgs
parents:
diff changeset
    52
	
hgs
parents:
diff changeset
    53
	CWriterController(CProfilerSampleStream& aStream);
hgs
parents:
diff changeset
    54
    ~CWriterController();
hgs
parents:
diff changeset
    55
	
hgs
parents:
diff changeset
    56
	/** 
hgs
parents:
diff changeset
    57
	 * 
hgs
parents:
diff changeset
    58
	 * Methods for user mode sampling
hgs
parents:
diff changeset
    59
	 * 
hgs
parents:
diff changeset
    60
	 **/
hgs
parents:
diff changeset
    61
	
hgs
parents:
diff changeset
    62
	/** Initialise the user mode samplers **/					
hgs
parents:
diff changeset
    63
	void InitialiseWriterListL();
hgs
parents:
diff changeset
    64
	
hgs
parents:
diff changeset
    65
	/* Overrider of MSamplerPluginLoaderObserver class **/
hgs
parents:
diff changeset
    66
	void HandlePluginLoaded( KWriterPluginLoaderStatus /*aStatus*/ );
hgs
parents:
diff changeset
    67
	
hgs
parents:
diff changeset
    68
	/* returns the matching plugin Uid */
hgs
parents:
diff changeset
    69
	TUid GetPluginUID(TInt traceId);
hgs
parents:
diff changeset
    70
	
hgs
parents:
diff changeset
    71
	CWriterPluginInterface* GetActiveWriter();
hgs
parents:
diff changeset
    72
	
hgs
parents:
diff changeset
    73
	 /** Returns the sampler type (kernel/user) **/
hgs
parents:
diff changeset
    74
	TUint32 GetWriterType(TUint32 samplerId);
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
	/** Set additional settings for a trace **/			
hgs
parents:
diff changeset
    77
	TInt AdditionalUserTraceSettings(TInt traceId, TInt settings);
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
	/** Set data stream for samplers **/
hgs
parents:
diff changeset
    80
	//void SetSampleStream(RProfilerSampleStream* iStream);
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
	TInt StartSelectedPlugin();
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
	void StopSelectedPlugin();
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
	/** Set selected plugin active **/
hgs
parents:
diff changeset
    87
	void SetPluginActive(TUid uid, const TWriterPluginValueKeys aKey);
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
	TInt SetPluginSettings(TUid aUid, TDes& aDes);
hgs
parents:
diff changeset
    90
	
hgs
parents:
diff changeset
    91
	/** Get settings for a specific plugin **/
hgs
parents:
diff changeset
    92
	void GetPluginSettings(TUid uid, TDes& aVal);
hgs
parents:
diff changeset
    93
	
hgs
parents:
diff changeset
    94
	/** Request stream read **/
hgs
parents:
diff changeset
    95
	//void FillThisStreamBuffer(TBapBuf* aBuffer, TRequestStatus& aStatus);
hgs
parents:
diff changeset
    96
	
hgs
parents:
diff changeset
    97
	CWriterPluginInterface* GetPlugin(TUid aUid);
hgs
parents:
diff changeset
    98
	
hgs
parents:
diff changeset
    99
	CArrayPtrFlat<CWriterPluginInterface>* GetPluginList();
hgs
parents:
diff changeset
   100
	
hgs
parents:
diff changeset
   101
	void InitialisePluginStream();
hgs
parents:
diff changeset
   102
public:
hgs
parents:
diff changeset
   103
    CArrayPtrFlat<CWriterPluginInterface>* iPluginArray;
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    // Asynchronous loader for the writer plug-ins.
hgs
parents:
diff changeset
   106
    CWriterPluginLoader* iPluginLoader;
hgs
parents:
diff changeset
   107
    
hgs
parents:
diff changeset
   108
    // UID of the selected plugin in the container's lbx.
hgs
parents:
diff changeset
   109
    TUid iSelectedPluginUid;
hgs
parents:
diff changeset
   110
    
hgs
parents:
diff changeset
   111
    CProfilerSampleStream& iStream;
hgs
parents:
diff changeset
   112
};
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
	
hgs
parents:
diff changeset
   115
#endif	// __WRITERCONTROLLER_H__