dbgsrv/coredumpserver/interface/common/plugindata.h
changeset 0 c6b0df440bee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbgsrv/coredumpserver/interface/common/plugindata.h	Tue Mar 02 10:33:16 2010 +0530
@@ -0,0 +1,242 @@
+// 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:
+// Defines ECOM-plugin related classes used accross the Core Dump client/server interface 
+//
+
+
+
+/**
+ @file
+ @publishedPartner 
+ @released
+*/
+
+#ifndef PLUGINDATA_H
+#define PLUGINDATA_H
+
+/**
+@publishedPartner 
+@released
+
+Class used between Core Dump Server and its clients to request 
+the server to carry out actions on plugins, such as load/unload.
+@see CCrashConfig::LoadPlugin()
+*/
+class TPluginRequest
+{
+public:
+
+	
+	inline TPluginRequest(){ iIndex = 0; }
+	
+	/** 
+	Type of plugin to request
+	*/
+	enum TPluginType
+		{
+		/** A formatter plugin */
+		EFormatter,
+		/** A writer plugin */
+		EWriter
+		};
+
+
+	/* Whether to load or unload the plugin */
+	TBool						iLoad; 
+
+	/** Type of plugin */
+	TPluginType					iPluginType;
+
+    /** Index of the plugin that requires action */
+	TUint						iIndex;
+
+	/** Plugin UID, used to check correct plugin */
+	TUid						iUid;
+
+    /** Index of the pair plugin */
+	TUint                       iPair;
+
+	/** @internalTechnology */
+	TUint32 iSpare2;
+};
+
+
+/** Maximum length allowed for a plugin's name */
+#define KPluginNameLength (50)
+
+/** Maximum length allowed for a plugin's description */
+#define KPluginDescriptionLength (250)
+
+/**
+@publishedPartner 
+@released
+
+Detailed information about a plugin.
+@see RPluginList
+@see TPluginInfoBlock
+*/
+class TPluginInfo
+{
+public:
+
+	/** Plugin's own version.
+	From rss file::IMPLEMENTATION_INFO::version_no */
+	TUint					iVersion;
+
+	/** Plugin's unique UID. 
+	From rss file::IMPLEMENTATION_INFO::implementation_uid */
+	TUid					iUid;
+
+	/** Plugin's own name.
+	From rss file::IMPLEMENTATION_INFO::display_name */
+	TBufC<KPluginNameLength>			iName;
+
+	/** Plugin's own description obtained from 
+	CCoreDumpFormatter->GetDescription()
+	@see CCoreDumpFormatter */
+	TBufC<KPluginDescriptionLength>	iDescription;
+
+	/** Plugin type : from TPluginRequest::TPluginType */
+	TPluginRequest::TPluginType	iType;
+
+	/** Plugin loaded state. */
+	TBool					iLoaded;
+
+	/** Reserved for future use
+	@internalTechnology */
+	TUint32 iSpare1;
+
+	/** @internalTechnology */
+	TUint32 iSpare2;
+};
+
+
+/**
+@publishedPartner 
+@released
+
+List of TPluginInfo objects.
+@see TPluginInfo
+@see RArray
+*/
+typedef RArray<TPluginInfo>	RPluginList;
+
+
+#include <streamelement.h>
+
+/**
+@publishedPartner 
+@released
+
+Class that represents a ECOM plugin instance. 
+It is based on CStreamElementBase so it can be streamed between client and server.
+@see CServerCrashDataSource::GetPluginListL
+*/
+class CPluginInfo : public CStreamElementBase
+{
+
+public:
+
+	IMPORT_C static CPluginInfo* NewL( const TDesC &aName,
+									   const TInt aUid,
+                                       const TUint aVersion,
+									   const TPluginRequest::TPluginType aType); 
+
+	IMPORT_C static CPluginInfo* NewL( const TDesC8 & aStreamData );
+
+	IMPORT_C ~CPluginInfo();
+
+public:
+
+	IMPORT_C void NameL( const TDesC & aName );
+	IMPORT_C const TDesC & Name() const;
+
+    IMPORT_C void Uid(const TInt aUid);
+    IMPORT_C TInt Uid() const;
+
+    IMPORT_C void Version(TUint aVersion);
+    IMPORT_C TUint Version() const;
+
+    IMPORT_C void Pair(TUint aIndex);
+    IMPORT_C TUint Pair() const;
+
+    IMPORT_C void Type(TPluginRequest::TPluginType aType);
+    IMPORT_C TPluginRequest::TPluginType Type() const;
+
+public:
+	// Methods required by streaming interface 
+
+	IMPORT_C TInt static MaxSize();
+
+	IMPORT_C TInt Size() const;
+
+	// Initializes ’this’ from stream
+	IMPORT_C void InternalizeL( RReadStream & aStream );
+
+	// Writes ’this’ to the stream
+	IMPORT_C void ExternalizeL( RWriteStream & aStream, CBufFlat* buf );
+
+
+private:
+
+	CPluginInfo( const TInt aUid,
+				 const TUint aVersion,
+                 const TPluginRequest::TPluginType aType);
+
+	CPluginInfo();
+
+	void ConstructL( const TDesC & aName );
+
+private:
+
+    /** Plugin name */
+	HBufC *iName;
+
+    /** Plugin UID */
+	TInt iUid;
+
+    /** Plugin version */
+	TUint iVersion;
+
+	/** Plugin type : from TPluginRequest::TPluginType */
+	TPluginRequest::TPluginType	iType;
+
+    /** Index to paired plugin */
+    TUint iPair;
+
+	/** Externalized size */
+	TUint				iSize;
+
+	/** Reserved for future use
+	@internalTechnology */
+	TUint32 iSpare1;
+
+	/** @internalTechnology */
+	TUint32 iSpare2;
+
+	};
+
+
+/**
+@publishedPartner 
+@released
+
+List of CPluginInfo object pointers
+@see CPluginInfo
+@see RPointerArray
+*/
+typedef RPointerArray<CPluginInfo>	RPluginPointerList;
+
+
+#endif