dbgsrv/coredumpserver/interface/server/coredumpserverapi.h
changeset 0 c6b0df440bee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbgsrv/coredumpserver/interface/server/coredumpserverapi.h	Tue Mar 02 10:33:16 2010 +0530
@@ -0,0 +1,340 @@
+// Copyright (c) 2007-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:
+// Definitions used between the Core Dump Server interface library and the server.
+//
+
+
+
+/**
+ @file
+ @publishedPartner 
+ @released
+*/
+
+#ifndef CORE_DUMP_SERVER_API_H
+#define CORE_DUMP_SERVER_API_H
+
+#include <plugindata.h>
+#include <optionconfig.h>
+
+/** Core Dump Server executable name */
+_LIT(KCoreDumpServerName, "coredump_svr");
+
+/** Core Dump Server UID */
+const TUid KCoreDumpServUid = { 0x10282FE5 };
+
+/** Core Dump Server major version */
+const TUint KCoreDumpServMajorVersionNumber=1;
+
+/** Core Dump Server minor version */
+const TUint KCoreDumpServMinorVersionNumber=1;
+
+/** Core Dump Server build number */
+const TUint KCoreDumpServBuildVersionNumber=2;
+
+/** @see ECrashMediaName 
+ * Length of each entry in the property ECrashMediaName 
+ */
+const TInt KMaxEntryLength = 160;
+
+/** @see ECrashMediaName 
+ * Number of entries in the property ECrashMediaName 
+ */
+const TInt KNumofEntries = 5;
+
+/** @see ECrashMediaName
+ * Size of Media Name in the property ECrashMediaName 
+ */
+const TInt KMaxMediaLength = 148;
+
+/** @see ECrashMediaName
+ * Length of UID in the property ECrashMediaName 
+ */
+const TInt KMaxUIDLength = 10;
+
+/** @see ECrashMediaName
+ * Length of the status in the property ECrashMediaName 
+ */
+const TInt KMaxStatusLength = 1;
+
+/** @see ECrashMediaName
+ * Length of the end character in the property ECrashMediaName 
+ */
+const TInt KMaxEndLength = 1;
+
+/** @see ECrashMediaName
+ * Length of the crash progress buffer ECrashProgress 
+ */
+const TInt KMaxCrashProgressBuffer = 50;
+
+enum TCoreDumpConfigParameters
+	{
+	ECrashEventTypes,
+	EPreCrashEventAction,
+	EPostCrashEventAction,
+	ELastParam
+	};		
+
+/** 
+Core Dump Server client-server requests 
+@internalTechnology 
+*/
+enum TCoreDumpServRqst
+	{
+	/** Obtain a plugin list. 
+	@see RCoreDumpSession::GetPluginListL(). */
+	ECoreDumpServGetPluginList,
+	
+	/** Generic call to obtain data about a list from the Core Dump Server. 
+	@see RCoreDumpSession::GetListLC(). */
+	ECoreDumpGetListInfo,
+
+	/** Generic call to obtain the list from the Core Dump Server. 
+	@see RCoreDumpSession::GetListLC(). */
+	ECoreDumpGetListData,
+
+	/** Request the loading or unloading of a plugin. 
+	@see RCoreDumpSession::PluginRequestL(). */
+	ECoreDumpPluginRequest,
+
+	/** Obtain the current number of configuration parameters. 
+	@see RCoreDumpSession::GetNumberConfigParametersL(). */
+	ECoreDumpGetNumberConfigParams,
+
+	/**  Obtain a configuration parameter.
+	@see RCoreDumpSession::GetConfigParameterL(). */
+	ECoreDumpGetConfigParam,
+
+	/**  Change a configuration parameter.
+	@see RCoreDumpSession::SetConfigParameterL(). */
+	ECoreDumpSetConfigParam,
+
+
+	/** Unused */
+    ECoreDumpAttachThread,
+
+	/** Unused */
+    ECoreDumpDetachThread,
+
+	/** Unused */
+    ECoreDumpAttachProcess,
+
+	/** Unused */
+    ECoreDumpDetachProcess,
+
+	/** Request the observation of a target or the cancellation of an observation.
+	@see RCoreDumpSession::ObservationRequestL(). */
+    ECoreDumpObservationRequest,
+
+	/** Request the restoration of a configuration.
+	@see RCoreDumpSession::LoadConfigL(). */
+	ECoreDumpLoadConfig,
+
+	/** Request the saving of a configuration.
+	@see RCoreDumpSession::SaveConfigL(). */
+	ECoreDumpSaveConfig,
+	
+	/** Deletes a crash in the flash partition */
+	ECoreDumpDeleteLogRequest,
+	
+	/** Deletes entire flash partition */
+	ECoreDumpDeleteCrashPartitionRequest,	
+	
+	/** Processes a crash in the flash partition */
+	ECoreDumpProcessFlashCrash,
+	
+	/** Asynchronously processes a crash */
+	ECoreDumpProcessCrashAsync,
+	
+	/** Cancel asynchronous processesing a crash */
+	ECoreDumpCancelProcessCrashAsync,
+	
+	/**	Guard	*/
+	ECoreDumpServEndMarker
+	
+	};
+
+/** Number of asynchronous requests */
+#define KTTMaxAsyncRequests		(4)
+
+/** Default number of message slots per session
+Same as KTTMaxAsyncRequests as synchronous requests provided
+by framework */
+#define KTTDefaultMessageSlots	(KTTMaxAsyncRequests)
+
+
+/**
+@internalTechnology
+Number of plugin details in a plugin transfer block. 
+Used between server library and cds
+*/
+#define KNumPluginDetails 5
+
+
+/**
+@internalTechnology
+Class used for transfering fixed sized blocks of plugin information 
+between the Core Dump Server and its clients. This makes it easier
+accross the client/server interface.
+@see TPluginInfo
+*/
+class TPluginInfoBlock
+{
+public:
+
+	/**	
+	A simple array is used as the transfer block across the 
+	process boundary.
+	*/
+	TPluginInfo plugins[ KNumPluginDetails ];
+};
+
+
+/**
+Enumerations that identify the RProperty objects shared between various parts 
+of the core dump server system, plugins and clients.
+
+The properties are defined by the Core Dump Session at startup. 
+These properties have the uid of the Core Dump Server.
+
+@publishedPartner 
+@released
+@see CCoreDumpSession::ConstructL().
+*/
+enum TCrashProgress 
+	{ 
+	/** Current crash status. Updated by formatters during a crash. 
+	RProperty of type RProperty::EText. */
+	ECrashProgress, 
+
+	/** Cancels the generation of a crash when set to non-zero.
+	RProperty of type RProperty::EInt. */
+	ECancelCrash,
+
+	/** Number of crashes served by this session of the Core Dump Server.
+	RProperty of type RProperty::EInt. */
+	ECrashCount,
+	
+	/** Name of the Crash Media Dump created. Updated by the CDS/Formatter
+	RProperty of type RProperty::EText. */
+	ECrashMediaName
+	};
+
+
+
+/**
+@publishedPartner 
+@released
+
+Class for requesting lists from the Core Dump Server. 
+The requestor appends the results of each request to obtain an entire list.
+Uses "T<type>InfoBlock" classes to transfer data accross the process boundary.
+*/
+class TListRequest
+{
+public:
+
+	/** Type of data to supply for this request */
+	enum TListRequestType
+		{
+		/** This request is for the formatter plugin list */
+		EFormatterList,
+
+		/** This request is for the writer plugin list */
+		EWriterList,
+
+		/** This request is for the thread list */
+		EThreadList,
+
+		/** This request is for the process list */
+		EProcessList,
+
+		/** This request is for the executable list */
+		EExecutableList,
+		
+		/** This request is for the crashes in flash */
+		ECrashList,
+
+		/** 
+		@internalTechnology
+		Last marker 
+		*/
+		EUnknownRequest
+
+		};
+
+	/** Type of data to supply for this request */
+	TListRequestType	iListType;
+
+	/** Sub identifiers for the request. These are auxiliary ids that 
+	can be used to refine the request. */
+	TUint32				iSubId1;
+	TUint32				iSubId2;
+
+	/** Requestor sets iIndex. iIndex==0 means the supplier should refresh the 
+	list and supply from index 0. iIndex > 0 means supply element 
+	[iIndex-1] and onwards. Requestor should thus increase iIndex 
+	by how many elements were supplied on each call. */
+	TUint				iIndex;
+
+	/** Supplier writes iSupplied according to how many items 
+	it copied into the buffer on this call */
+	TUint				iSupplied;
+
+	/** Supplier writes iRemaining to indicate how many items it 
+	has yet to supply. */
+	TUint				iRemaining;
+
+	/** Number of bytes required to hold the resulting data */
+	TUint				iRequiredDescriptorSize;
+
+	/** 
+	Spare variables for future expansion.
+	@internalTechnology */
+	TUint32				iSpare0;
+	/** @internalTechnology */
+	TUint32				iSpare1;
+	/** @internalTechnology */
+	TUint32				iSpare2;
+	/** @internalTechnology */
+	TUint32				iSpare3;
+
+};
+
+/**
+@publishedPartner 
+@released
+
+Class for requesting change in configuration parameter from the CDS and loaded plugins. 
+*/
+class TConfigRequest
+{
+public:
+	/** Type of data to supply for this request */
+    COptionConfig::TParameterSource iSource;
+
+	/** Sub identifiers for the request. These are auxiliary ids that 
+	can be used to refine the request. */
+	TUint32				iIndex;
+	TUint32				iInstance;
+
+	/** 
+	Spare variables for future expansion.
+	@internalTechnology */
+	TUint32				iSpare0;
+	/** @internalTechnology */
+	TUint32				iSpare1;
+};
+
+#endif // CORE_DUMP_SERVER_API_H