diff -r 3ff3fecb12fe -r 6a82cd05fb1e memana/analyzetoolclient/storageserver/client/inc/atstorageserverclnt.h --- a/memana/analyzetoolclient/storageserver/client/inc/atstorageserverclnt.h Thu Feb 11 15:52:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,380 +0,0 @@ -/* -* 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: Declaration of the client side handle class RATStorageServer -* -*/ - - - -#ifndef ATSTORAGESERVERCLNT_H -#define ATSTORAGESERVERCLNT_H - - -// INCLUDES -#include -#include - - -// CONSTANTS -// Constants for the lowest version of the server with which the -// client is compatible -const TUint KLowestVersionNumberMaj = 0; -const TUint KLowestVersionNumberMin = 1; -const TUint KLowestVersionNumberBld = 1; - - -// FORWARD DECLARATIONS -class TATProcessInfo; - - -// CLASS DECLARATION - -/** -* The main class of the Storage Server client. Objects of this class work as handles -* to the Storage Server's server side. Use Connect() to connect a client to the server, -* and Close() to end an opened session. -*/ -class RATStorageServer: public RSessionBase - { - public: // Constructor and destructor - - /** - * C++ default constructor. - */ - IMPORT_C RATStorageServer(); - - public: // New functions - - /** - * Creates a new process for the server, if that doesn't already exist, and - * connects a client to the server by creating a new session with it, and - * initializes the client for use. To end the server session, use Close(). - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt Connect(); - - /** - * Closes a handle to a server session. This has also the effect of destroying - * the associated server side session object. Also, the server itself and the - * process where it is running are destroyed, if there are no other open sessions - * left. - */ - IMPORT_C void Close(); - - /** - * This method is called to initialize the server for logging and it is to be - * called as the first method after connecting to the server. The method informs - * the server that a new process has been started. The method cannot be called - * again without a call to the LogProcessEnded() first. Otherwise a STSEClient: 3 - * panic is raised. A KERN-EXEC: 0 panic is raised if the client is not connected - * to the server. - * @param aFileName The name of the logging file used when the system is logging - * to a file (the logging mode is EATLogToFile). The length of aFileName must not be - * greater than KMaxFileName, otherwise the method raises a STSEClient: 2 panic. - * @param aProcessName The name of the new process started. The length of this - * descriptor must not be greater than KMaxProcessName, otherwise the method - * raises a STSEClient: 2 panic. - * @param aProcessId The ID of the process started. - * @param aLogOption An option telling the logging mode. - * @param aIsDebug Determines whether a binary is UDEB or UREL - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt LogProcessStarted( const TDesC& aFileName, - const TDesC8& aProcessName, - TUint aProcessId, - TUint32 aLogOption, TUint32 aIsDebug ); - - /** - * Asks the server to log that a new DLL has been loaded. Note, the method - * LogProcessStarted() has to be previously called. Otherwise a STSEClient: 3 - * panic is raised. A KERN-EXEC: 0 panic is raised if the client is not connected - * to the server. - * @param aDllName The name of the new DLL loaded. The length of this descriptor - * must not be greater than KMaxLibraryName, otherwise the method raises a - * STSEClient: 2 panic. - * @param aStartAddress The start address of the DLL loaded. - * @param aEndAddress The end address of the DLL loaded. - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt LogDllLoaded( const TDesC8& aDllName, TUint32 aStartAddress, - TUint32 aEndAddress ); - - /** - * Asks the server to log that a new DLL has been unloaded. Note, the method - * LogProcessStarted() has to be previously called. Otherwise a STSEClient: 3 - * panic is raised. A KERN-EXEC: 0 panic is raised if the client is not connected - * to the server. If the method is called with illegal parameter values, a - * STSEClient: 2 panic is raised. - * @param aDllName The name of the DLL to be unloaded. The length of this - * descriptor must not be greater than KMaxLibraryName, otherwise the method - * raises a STSEClient: 2 panic. - * @param aStartAddress The start address of the DLL to be unloaded. - * @param aEndAddress The end address of the DLL to be unloaded. - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt LogDllUnloaded( const TDesC8& aDllName, TUint32 aStartAddress, - TUint32 aEndAddress ); - - /** - * Informs the server that a memory allocation has occured at the specified - * address. Sends also the current call stack to the server. Note, the method - * LogProcessStarted() has to be previously called. Otherwise a STSEClient: 3 - * panic is raised. A KERN-EXEC: 0 panic is raised if the client is not connected - * to the server. - * @param aMemAddress The memory location where memory has been allocated. - * @param aCallstack An array including the current call stack. - * @param aSize The size of the newly allocated memory chunk. - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt LogMemoryAllocated( TUint32 aMemAddress, - TFixedArray& aCallstack, - TInt aSize ); - - /** - * Informs the server that memory was released at the specified address. Note, - * the method LogProcessStarted() has to be previously called. Otherwise a - * STSEClient: 3 panic is raised. A KERN-EXEC: 0 panic is raised if the client is - * not connected to the server. - * @param aMemAddress The memory location where memory has been deallocated. - * @param aFreeCallstack An array including the current call stack. - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt LogMemoryFreed( TUint32 aMemAddress, - TFixedArray& aFreeCallstack ); - - /** - * Tells the server that the process under test has been ended. Prints information - * related to process ending, such as possibly occured memory leaks (when S60 - * logging mode used), and possibly occured handle leaks. Note, the method - * LogProcessStarted() has to be previously called. Otherwise a STSEClient: - * 3 panic is raised. A call to this method also closes the file opened for - * the current process. So, no further logging is possible without a new call - * to the method LogProcessStarted(). A KERN-EXEC: 0 panic is raised if the client - * is not connected to the server. - * @param aProcessId The ID number of the process ended. - * @param aHandleLeaks Amount of handle leaks. - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - IMPORT_C TInt LogProcessEnded( TUint aProcessId, - TUint aHandleLeaks ); - - /** - * Gives the lowest version number of the server needed for this client. - * @return The lowest version of the server needed for this client. - */ - IMPORT_C TVersion Version() const; - - /** - * Checks if the current process has allocated, but not freed, the given memory - * address. Note, the method LogProcessStarted() has to be previously called. - * Otherwise a STSEClient: 3 panic is raised. A KERN-EXEC: 0 panic is raised if - * the client is not connected to the server. - * @param aMemAddress The memory location to check. - * @return When the system is logging into a file: the index of a found - * memory address or KErrNotFound, if a matching memory address cannot - * be found. When the system is not logging into a file: always KErrNone. - */ - IMPORT_C TInt CheckMemoryAddress( TUint32 aMemAddress ) const; - - /** - * Gets all the processes with currently open logging sessions. - * @param aProcesses A reference to a process array to be filled by the server. - * @return KErrNone, if successful; otherwise one of the other - * system wide error codes. - */ - IMPORT_C TInt GetProcessesL( RArray& aProcesses ); - - /** - * Gets all the DLLs loaded by the given process. - * @param aProcessId The ID of the process whose DLLs will be fetched. - * @param aDlls An array that after this function call includes names of - * the given process's dlls - * @return KErrNone, if successful; KErrNotFound, if the requested process was - * not found; otherwise one of the other system wide error codes. - */ - IMPORT_C TInt GetLoadedDllsL( TUint aProcessId, - RArray< TBuf8 >& aDlls ); - - /** - * Sets the logging mode of the given process. - * @param aProcessId The ID of the process whose logging mode should be set. - * @param aLoggingMode An enumeration telling the logging mode. - * @return KErrNone, if successful; KErrNotFound, if the requested process was - * not found; otherwise one of the other system wide error codes. - */ - IMPORT_C TInt SetLoggingMode( TUint aProcessId, TATLogOption aLoggingMode ); - - /** - * Gets the logging mode of the given process. - * @param aProcessId The ID of the process whose logging mode is being asked. - * @param aLoggingMode An enumeration telling the logging mode after a call - * to this function. - * @return KErrNone, if successful; KErrNotFound, if the requested process was - * not found; otherwise one of the other system wide error codes. - */ - IMPORT_C TInt GetLoggingModeL( TUint aProcessId, TATLogOption& aLoggingMode ); - - /** - * Starts a sub test for the given process. - * @param aProcessId The ID of the process for which to start a sub test. - * @param aSubtestId The name identifying this particular sub test. The length - * of this descriptor must not be greater than KATMaxSubtestIdLength, or - * otherwise the method raises a STSEClient: 2 panic. - * @param aHandleCount The current handle count of a particular process. - * @return KErrNone, if successful; KErrNotFound, if the requested process was not - * found; KErrNotSupported, if the requested process does not have a logging - * session ongoing or its logging mode is not EATLogToXti; Otherwise one of the - * other system wide error codes. - */ - IMPORT_C TInt StartSubTest( TUint aProcessId, const TDesC8& aSubtestId, TInt aHandleCount = 0 ); - - /** - * Stops a sub test for the given process. - * @param aProcessId The ID of the process for which to stop a sub test. - * @param aSubtestId The name identifying this particular sub test. The length - * of this descriptor must not be greater than KATMaxSubtestIdLength, or - * otherwise the method raises a STSEClient: 2 panic. - * @param aHandleCount The current handle count of a particular process. - * @return KErrNone, if successful; KErrNotFound, if the requested process was not - * found; KErrNotSupported, if the requested process does not have a logging - * session ongoing or its logging mode is not EATLogToXti; Otherwise one of the - * other system wide error codes. - */ - IMPORT_C TInt StopSubTest( TUint aProcessId, const TDesC8& aSubtestId, TInt aHandleCount = 0 ); - - /** - * Gets the number and total size of the memory chunks currently allocated by the - * requested process. - * @param aProcessId The ID of the process whose information is requested. - * @param aNumber On return contains the number of memory chunks currenlty - * allocated by the requested process. - * @param aSize On return contains the amount of memory currently allocated - * by the requested process. - * @return KErrNone, if successful; KErrNotFound, if the requested process was not - * found; Otherwise one of the other system wide error codes. - */ - IMPORT_C TInt GetCurrentAllocsL( TUint aProcessId, TUint32& aNumber, TUint32& aSize ); - - /** - * Gets the maximum number and total size of the memory chunks allocated by the - * requested process. - * @param aProcessId The ID of the process whose information is requested. - * @param aNumber On return contains the maximum number of memory chunks - * allocated by the requested process during the test run. - * @param aSize On return contains the maximum amount of memory allocated - * by the requested process during the test run. - * @return KErrNone, if successful; KErrNotFound, if the requested process was not - * found; Otherwise one of the other system wide error codes. - */ - IMPORT_C TInt GetMaxAllocsL( TUint aProcessId, TUint32& aNumber, TUint32& aSize ); - - /** - * Starts a sub test for the calling process. - * @param aSubtestId The name identifying this particular sub test. The length - * of this descriptor must not be greater than KATMaxSubtestIdLength, or - * otherwise the method raises a STSEClient: 2 panic. - * @return KErrNone, if successful; KErrNotSupported, if the calling process - * does not have a logging session ongoing or its logging mode is not - * EATLogToXti; Otherwise one of the other system wide error codes. - */ - IMPORT_C TInt StartSubTest( const TDesC8& aSubtestId ); - - /** - * Stops a sub test for the calling process - * @param aSubtestId The name identifying this particular sub test. The length - * of this descriptor must not be greater than KATMaxSubtestIdLength, or - * otherwise the method raises a STSEClient: 2 panic. - * @return KErrNone, if successful; KErrNotSupported, if the calling process - * does not have a logging session ongoing or its logging mode is not - * EATLogToXti; Otherwise one of the other system wide error codes. - */ - IMPORT_C TInt StopSubTest( const TDesC8& aSubtestId ); - - /** - * Cancels logging for the requested process. After logging of a given process - * has been cancelled, the session associated with that process will not be - * usable anymore. If a process wants to start logging again, it needs to close - * the handle and open it again in order to create a new session. Until then, most - * of the client's methods will return KErrCancel. - * @param aProcessId The process ID of the process whose logging is requested to - * be cancelled. - * @return KErrNone, if successful; KErrNotFound, if the requested process was - * not found; otherwise one of the other system wide error codes. - */ - TInt CancelLogging( TUint aProcessId ); - - /** - * Gets the number and total size of the memory chunks currently allocated by the - * requested process. - * @param aProcessId The ID of the process whose information is requested. - * @param aIsUdeb On return contains an value greater than KErrNone if - * mode is UDEB. Else the mode is UREL - * @return KErrNone, if successful; KErrNotFound, if the requested process was not - * found; Otherwise one of the other system wide error codes. - */ - IMPORT_C TInt GetUdebL( TUint aProcessId, TUint32& aIsUdeb ); - - /** - * Gets the number and total size of the memory chunks currently allocated by the - * requested process. - * @param aProcessId The ID of the process whose information is requested. - * @param aFileName On return contains logging filename for the process. - * @return KErrNone, if successful; KErrNotFound, if the requested process was not - * found; Otherwise one of the other system wide error codes. - */ - IMPORT_C TInt GetLoggingFileL( TUint aProcessId, TDes8& aFileName ); - - /** - * Check a memory allocation (memory address) from an internal array. - * @param aMemAddress The memory address to be check - * @return KErrNone, if memory address found in array; - * KErrNotFound, if the requested memory address was not found. - */ - IMPORT_C TInt IsMemoryAdded( TUint32 aMemAddress ); - - protected: // New functions - - /** - * Creates a new process for the server, if it does not already exist. - * @return KErrNone, if successful; otherwise one of the other - * system-wide error codes. - */ - TInt CreateProcess(); - - private: // Internal functions - - /** - * Creates two buffers: one for storing call stack memory addresses and one for - * handle leaks. Internally used by this class. May leave, if there is - * insufficient memory. - */ - void ConstructBuffersL(); - - private: // Data - - /** A pointer to a buffer of call stack's memory addresses */ - CBufFlat* iStackBuf; - }; - -#endif // ATSTORAGESERVERCLNT_H - - -// End of File