memspy/MemSpyClient/inc/memspysession.h
branchRCL_3
changeset 49 7fdc9a71d314
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/memspy/MemSpyClient/inc/memspysession.h	Wed Sep 15 13:53:27 2010 +0300
@@ -0,0 +1,282 @@
+/*
+* 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 MEMSPYSESSION_H
+#define MEMSPYSESSION_H
+
+
+// System includes
+#include <e32base.h>
+#include <u32std.h>
+
+//user includes
+#include <memspy/api/memspyapiprocess.h>
+
+#include <memspy/api/memspyapithread.h>
+#include <memspy/api/memspyapithreadinfoitem.h>
+#include <memspy/engine/memspythreadinfoitemdata.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspydevicewideoperations.h>
+
+#include <memspy/api/memspyapikernelobject.h>
+
+#include <memspy/api/memspyapikernelobjectitem.h> //for KernelObjectItems
+
+#include <memspy/api/memspyapiheap.h>
+
+#include <memspy/api/memspyapimemorytrackingcycle.h>
+
+#include <memspyengineclientinterface.h>
+#include <memspy/engine/memspyengineoutputsinktype.h>
+
+#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
+
+#include <memspy/api/memspyapiserver.h>
+
+#include <memspy/api/memspyapiecom.h>
+
+// Constants
+const TInt KMemSpyVersion           = 2;
+
+enum TSortType
+	{
+	ESortProcById,
+	ESortProcByName,
+	ESortProcByThreadCount,
+	ESortProcByCodeSegs,
+	ESortProcByHeapUsage,
+	ESortProcByStackUsage,
+	ESortServByName,
+	ESortServBySessionCount
+	};
+
+enum TMemSpyOutputType
+    {
+    EOutputTypeDebug = 0,
+    EOutputTypeFile
+    };
+
+class TMemSpyDeviceWideOperationProgress 
+	{
+public:
+	IMPORT_C TInt Progress() const;
+	IMPORT_C const TDesC& Description() const;
+	
+private:
+	TPckgBuf<TInt> iProgress;
+	TFullName iDescription;
+	
+friend class RMemSpySession;
+	};
+
+
+NONSHARABLE_CLASS( RMemSpySession ) : public RSessionBase
+    {
+public:
+    IMPORT_C RMemSpySession();
+    IMPORT_C TInt Connect();
+    
+public:	//API
+    //Thread speciifc operations
+    IMPORT_C void OutputKernelHeapDataL(); //EMemSpyClientServerOpHeapData
+    
+    IMPORT_C void OutputKernelHeapData(TRequestStatus& aStatus); //EMemSpyClientServerOpHeapData
+    
+    IMPORT_C void OutputThreadHeapDataL(TThreadId aThreadId); //EMemSpyClientServerOpHeapData
+    
+    IMPORT_C void OutputThreadHeapDataL(const TDesC& aThreadName); //EMemSpyClientServerOpHeapData
+    
+    IMPORT_C void OutputThreadCellListL(TThreadId aThreadId);//EMemSpyClientServerOpHeapCellListing    
+    
+    IMPORT_C void OutputHeapInfoUserL(TThreadId aThreadId);	//EMemSpyClientServerOpHeapInfo
+    
+    IMPORT_C void SwitchOutputSinkL( TMemSpySinkType aType); //EMemSpyClientServerOpSwitchOutputSinkFile / EMemSpyClientServerOpSwitchOutputSinkTrace
+    
+    IMPORT_C void SwitchOutputToTraceL(); // EMemSpyClientServerOpSwitchOutputSinkTrace
+    
+    IMPORT_C void SwitchOutputToFileL(const TDesC& aRootFolder); // EMemSpyClientServerOpSwitchOutputSinkFile
+    
+    IMPORT_C void OutputStackInfoL(TThreadId aThreadId); //EMemSpyClientServerOpStackInfo
+    
+    IMPORT_C void OutputStackDataL(TThreadId aThreadId, TMemSpyDriverDomainType aType ); //EMemSpyClientServerOpStackDataUser / EMemSpyClientServerOpStackDataKernel    
+    
+    IMPORT_C void OutputThreadInfoHandlesL(TThreadId aThreadId); //EMemSpyClientServerOpOutputInfoHandles
+    
+    IMPORT_C void OutputAOListL(TThreadId aId, TMemSpyThreadInfoItemType aType);	//EMemSpyClientServerOpOutputAOList    
+    
+    IMPORT_C void OutputKernelObjectsL();// EMemSpyClientServerOpEnumerateKernelContainerAll
+    
+    IMPORT_C void OutputCompactStackInfoL();// EMemSpyClientServerOpStackInfoCompact
+    
+    IMPORT_C void OutputCompactHeapInfoL();// EMemSpyClientServerOpHeapInfoCompact
+    
+    // Device Wide Operations
+    // Synchronous operations - for CLI
+    IMPORT_C void OutputHeapData();
+    
+    // Asynchronous operations
+    IMPORT_C void OutputPhoneInfo(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputDetailedPhoneInfo(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputHeapInfo(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputCompactHeapInfo(TRequestStatus &aStatus);
+    
+    IMPORT_C void OutputHeapCellListing(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputHeapData(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputStackInfo(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputCompactStackInfo(TRequestStatus &aStatus);
+    
+    IMPORT_C void OutputUserStackData(TRequestStatus& aStatus);
+    
+    IMPORT_C void OutputKernelStackData(TRequestStatus& aStatus);
+    
+    IMPORT_C void NotifyDeviceWideOperationProgress(TMemSpyDeviceWideOperationProgress &aProgress, TRequestStatus &aStatus);
+    
+    IMPORT_C void CancelDeviceWideOperationL();
+    
+    // Synchronous operations for MemSpyLauncher
+    IMPORT_C void OutputPhoneInfo();
+    
+    // "Ui" operations
+    
+    IMPORT_C void GetProcessesL(RArray<CMemSpyApiProcess*> &aProcesses, TSortType aSortType = ESortProcById);
+    
+    IMPORT_C TProcessId GetProcessIdByNameL(const TDesC& aProcessName);
+    
+    IMPORT_C void GetThreadsL(TProcessId aProcessId, RArray<CMemSpyApiThread*> &aThreads, TSortType aSortType = ESortProcById);
+    
+    IMPORT_C TInt ProcessSystemPermanentOrCritical( TProcessId aId, TBool aValue ); //aValue -> return value
+    
+    IMPORT_C void SetThreadPriorityL(TThreadId aId, TInt aPriority);
+    
+    IMPORT_C TInt EndProcessL( TProcessId aId, TMemSpyEndType aType );
+    
+    IMPORT_C TInt SwitchToProcess( TProcessId aId, TBool aBrought  );
+    
+    IMPORT_C void GetProcessIdByThreadId( TProcessId& aPID, TThreadId aTID );
+    
+    //SWMT operations
+    
+    IMPORT_C void GetMemoryTrackingCyclesL(RArray<CMemSpyApiMemoryTrackingCycle*>& aCycles);
+    
+    IMPORT_C TInt GetSwmtCyclesCount();
+    
+    IMPORT_C void SetSwmtAutoStartProcessList( CArrayFixFlat<TUid>* aList );
+    
+    IMPORT_C void SetSwmtFilter( const TDesC& aFilter );            
+    
+    IMPORT_C void SetSwmtCategoriesL(TInt aCategories);
+
+    IMPORT_C void SetSwmtHeapDumpsEnabledL(TBool aEnabled);
+    
+    IMPORT_C void SetSwmtMode(TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode aMode);      
+    
+    IMPORT_C void SwmtResetTracking();
+    
+    IMPORT_C void GetOutputSink( TMemSpySinkType& aType );
+           
+    IMPORT_C TBool IsSwmtRunningL();
+    
+    IMPORT_C void StartSwmtTimerL(TInt aPeriod);
+    
+    IMPORT_C void StartSwmtTimerL(); // for CLI
+    
+    IMPORT_C void SetSwmtTimerIntervalL(TInt aPeriod); //for CLI
+    
+    IMPORT_C void StopSwmtTimerL();
+    
+    IMPORT_C void ForceSwmtUpdateL();
+    
+    IMPORT_C void ForceSwmtUpdate(TRequestStatus& aStatus);
+    
+    IMPORT_C void GetSwmtFilter( TName& aFilter );            
+        
+    IMPORT_C void GetSwmtCategoriesL(TInt& aCategories);
+
+    IMPORT_C void GetSwmtHeapDumpsEnabledL(TBool& aEnabled);
+        
+    IMPORT_C void GetSwmtMode(TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode& aMode);
+    
+    IMPORT_C void GetSwmtTimerIntervalL(TInt& aPeriod);
+    
+    //Threads operations
+    /**
+     * 
+     */
+    IMPORT_C void GetThreadsL(TProcessId aProcessId, RArray<CMemSpyApiProcess*> &aThreads, TSortType aSortType = ESortProcById);
+    
+    IMPORT_C TInt ThreadSystemPermanentOrCritical( TThreadId aId, TBool aValue );
+        
+    IMPORT_C TInt EndThreadL( TThreadId aId, TMemSpyEndType aType );
+    
+    IMPORT_C TInt SwitchToThread( TThreadId aId, TBool aBrought );
+    
+    IMPORT_C TInt GetInfoItemType( TInt aIndex, TThreadId aId, TMemSpyThreadInfoItemType &aType );
+    
+    IMPORT_C TInt GetThreadInfoItems( RArray<CMemSpyApiThreadInfoItem*> &aInfoItems, TThreadId aId, TMemSpyThreadInfoItemType aType );
+    
+    IMPORT_C void GetThreadInfoItemsL( RArray<CMemSpyApiThreadInfoItem*> &aInfoItems, TThreadId aId, TMemSpyThreadInfoItemType aType );            
+    
+    //KernelObjects operations
+    
+    IMPORT_C void GetKernelObjectsL( RArray<CMemSpyApiKernelObject*> &aKernelObjects );
+    
+    IMPORT_C TInt GetKernelObjects( RArray<CMemSpyApiKernelObject*> &aKernelObjects );
+    
+    IMPORT_C void GetKernelObjectItemsL( RArray<CMemSpyApiKernelObjectItem*> &aKernelObjectItems, TMemSpyDriverContainerType aForContainer );
+    
+    IMPORT_C TInt GetKernelObjectItems( RArray<CMemSpyApiKernelObjectItem*> &aKernelObjectItems, TMemSpyDriverContainerType aForContainer );
+    
+    IMPORT_C void OutputAllContainerContents();
+    
+    // Heap 
+    
+    IMPORT_C CMemSpyApiHeap* GetHeapL();
+    
+	IMPORT_C CMemSpyApiHeap* GetHeap();
+	
+	IMPORT_C void DumpKernelHeap();
+	
+	// Servers
+	IMPORT_C void GetServersL(RArray<CMemSpyApiServer*> &aServers);
+	
+	IMPORT_C void GetServersL(RArray<CMemSpyApiServer*> &aServers, TSortType aSortType); 
+	
+	IMPORT_C void ServerListOutputGenericL( TBool aDetailed );
+		
+	// ECom
+
+	IMPORT_C void GetEComCategoriesL(RArray<CMemSpyApiEComCategory*> &aCategories);
+	
+	IMPORT_C void GetEComInterfacesL(TUid aCategory, RArray<CMemSpyApiEComInterface*> &aInterfaces);
+	
+	IMPORT_C void GetEComImplementationsL(TUid aInterface, RArray<CMemSpyApiEComImplementation*> &aImplementations);
+	
+private:
+    TInt StartServer();       
+    
+    void SetOutputTypeL(TMemSpyOutputType aOutputType);
+    
+    };
+
+#endif // MEMSPYSESSION_H