datacommsserver/esockserver/inc/ss_nodemessages.h
changeset 0 dfb7c4ff071f
child 21 4ccf8e394726
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/inc/ss_nodemessages.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,310 @@
+// Copyright (c) 2005-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:
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef SYMBIAN_NODEMESSAGES_H
+#define SYMBIAN_NODEMESSAGES_H
+
+#define SYMBIAN_NETWORKING_UPS
+#include <es_enum.h>
+#include <elements/nm_signatures.h>
+#include <elements/nm_address.h>
+#include <elements/nm_messages_base.h>
+#include <comms-infras/ss_common.h>
+#include <comms-infras/ss_logext.h>
+#include <es_sock.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <es_sock_partner.h>
+#endif
+
+
+#include <comms-infras/metatype.h>
+#include <elements/factory.h>
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+#include <comms-infras/es_event.h>
+#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
+#ifdef SYMBIAN_NETWORKING_UPS
+#include <comms-infras/ss_upsaccesspointconfigext.h>
+#endif
+#include <comms-infras/es_parameterfamily.h>
+#include <comms-infras/ss_parameterfamilybundle.h>
+
+
+#include <comms-infras/ss_refcountowner.h>
+
+#include <comms-infras/ss_commsprov.h>
+
+namespace ESock
+{
+
+
+/**
+Factory query payload base class.
+Note: The multiple inheritance is safe to do as the vptr size is always less than STypeID
+size.
+
+@publishedPartner
+@released
+*/
+class TFactoryQueryBase : public Meta::SMetaDataNetCtor, public Factories::MFactoryQuery
+	{
+public:
+	static const TInt KMaxInlineFactoryQuerySize = 48;
+	};
+
+/**
+Attribute creation policy using Sockman globals.
+
+@publishedPartner
+@released
+*/
+class TVCFromSockManAttributeCreationPolicy
+	{
+public:
+	IMPORT_C static Meta::SMetaData* New(TPtrC8& aSrc, TPtr8& aDst);
+	};
+
+class TAlwaysFindFactoryQuery : public TFactoryQueryBase
+	{
+protected:
+	IMPORT_C virtual Factories::MFactoryQuery::TMatchResult Match(Factories::TFactoryObjectInfo& aObjectInfo);
+
+public:
+	IMPORT_C explicit TAlwaysFindFactoryQuery ();
+
+	DECLARE_MVIP_CTR(TAlwaysFindFactoryQuery)
+	EXPORT_DATA_VTABLE_AND_FN
+	};
+
+class TMetaConnectionFactoryQuery : public TFactoryQueryBase
+	{
+public:
+	IMPORT_C TMetaConnectionFactoryQuery();
+
+	IMPORT_C explicit TMetaConnectionFactoryQuery(const TProviderInfo& aProviderInfo, const TUid aTierImplUid);
+
+protected:
+	IMPORT_C virtual Factories::MFactoryQuery::TMatchResult Match(Factories::TFactoryObjectInfo& aFactoryObjectInfo);
+
+public:
+	//We have it by value here as we need the XMetaConnectionFactoryQuery object
+	//to be sent in a message.
+	TProviderInfo iProviderInfo;
+	TUid iTierImplUid; // Tier Implementation Uid == Tier factory id
+
+	DECLARE_MVIP_CTR(TMetaConnectionFactoryQuery)
+	EXPORT_DATA_VTABLE_AND_FN
+	};
+
+class TDefaultConnectionFactoryQuery : public TFactoryQueryBase
+/** Class implementing MFactoryQuery to find a connection provider.
+
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C explicit TDefaultConnectionFactoryQuery(const Messages::TNodeId& aMCprId);
+
+
+	IMPORT_C explicit TDefaultConnectionFactoryQuery();
+
+protected:
+	IMPORT_C virtual Factories::MFactoryQuery::TMatchResult Match(Factories::TFactoryObjectInfo& aFactoryObjectInfo);
+
+public:
+	const Messages::TNodeId iMCprId;
+	DECLARE_MVIP_CTR(TDefaultConnectionFactoryQuery)
+	EXPORT_DATA_VTABLE_AND_FN
+	};
+
+class TDefaultSCPRFactoryQuery : public TFactoryQueryBase
+/**
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C TDefaultSCPRFactoryQuery();
+
+	//used to look up sub-connection from control side
+	IMPORT_C TDefaultSCPRFactoryQuery(const Messages::TNodeId& aControlProvider, TSubConnOpen::TSubConnType aSCPRType);
+protected:
+	IMPORT_C virtual Factories::MFactoryQuery::TMatchResult Match(Factories::TFactoryObjectInfo& aFactoryObjectInfo);
+public:
+	Messages::TNodeId 					iControlProvider;
+	TSubConnOpen::TSubConnType 			iSCPRType; //default/reserved
+
+	DECLARE_MVIP_CTR(TDefaultSCPRFactoryQuery)
+	EXPORT_DATA_VTABLE_AND_FN
+	};
+
+class TDefaultFlowFactoryQuery : public TFactoryQueryBase
+/**
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C TDefaultFlowFactoryQuery();
+
+	IMPORT_C TDefaultFlowFactoryQuery(const Messages::TNodeId& aSCprId);
+	IMPORT_C TDefaultFlowFactoryQuery(const Messages::TNodeId& aCprId, const Messages::TNodeId& aSCprId);
+	IMPORT_C TDefaultFlowFactoryQuery(const Messages::TNodeId& aCprId, const Messages::TNodeId& aSCprId, Messages::TNodeSignal::TMessageId aMessageId, TInt aProtocolType);
+protected:
+	IMPORT_C virtual Factories::MFactoryQuery::TMatchResult Match(Factories::TFactoryObjectInfo& aFactoryObjectInfo);
+public:
+	Messages::TNodeId					iCprId;
+	Messages::TNodeId					iSCprId;
+	Messages::TNodeSignal::TMessageId 	iMessageId;
+	TInt			iProtocolType;
+
+	DECLARE_MVIP_CTR(TDefaultFlowFactoryQuery)
+	EXPORT_DATA_VTABLE_AND_FN
+	};
+
+class TDefaultProtocolIntfFactoryQuery : public TFactoryQueryBase
+/**
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C TDefaultProtocolIntfFactoryQuery();
+	IMPORT_C TDefaultProtocolIntfFactoryQuery(const Messages::TNodeId& aCprId);
+
+protected:
+	IMPORT_C virtual Factories::MFactoryQuery::TMatchResult Match(Factories::TFactoryObjectInfo& aFactoryObjectInfo);
+public:
+	Messages::TNodeId			iCprId;
+	DECLARE_MVIP_CTR(TDefaultProtocolIntfFactoryQuery)
+	EXPORT_DATA_VTABLE_AND_FN
+	};
+
+
+DECLARE_MESSAGE_SIG_1(SigFamilyBundle, RCFParameterFamilyBundleC, FamilyBundle)
+DECLARE_MESSAGE_SIG_2(SigNumberFamilyBundle, TInt, Value, RCFParameterFamilyBundleC, FamilyBundle)
+DECLARE_MESSAGE_SIG_3(SigPlayerRoleUidFactoryQuery, TInt, FactoryContainerType, TUid, Uid, ESock::TFactoryQueryBase*, Query)
+DECLARE_MESSAGE_SIG_1(SigSubConnParams, CSubConParameterBundle*, SubConParameterBundle)
+DECLARE_MESSAGE_SIG_2(SigNumberSubConnParams, TInt, Value, const CSubConParameterBundle*, SubConParameterBundle)
+DECLARE_MESSAGE_SIG_2(SigBundleRMessage2, CRefCountOwnedParameterBundle*, Bundle, const RMessage2*, Message)
+DECLARE_MESSAGE_SIG_1(SigBundle, CRefCountOwnedParameterBundle*, Bundle)
+DECLARE_MESSAGE_SIG_3(SigNodeIdClientTypeUid, Messages::TNodeId, NodeId, Messages::TClientType, ClientType, TUid, Uid)
+DECLARE_MESSAGE_SIG_3(SigNodeIdClientTypeNumber, Messages::TNodeId, NodeId, Messages::TClientType, ClientType, TUint, Value)
+
+
+/**
+Message signature to carry and own a reference on a RMetaExtensionContainerC
+The reference will be automatically aquired upon explicit construction
+The reference will be automatically released after dispatch or on error
+The RMetaExtensionContainerC to be posted MUST be open else a panic will occur (in udeb)
+*/
+struct TSigMetaExtContainer : public Messages::TSignatureBase
+    {
+public:
+    IMPORT_C virtual void DispatchL(const Messages::TRuntimeCtxId& aSender, const Messages::TRuntimeCtxId& aRecipient);
+    IMPORT_C virtual void Error(const Messages::TRuntimeCtxId& aSender, const Messages::TRuntimeCtxId& aRecipient, TInt aError);
+
+protected:
+    inline TSigMetaExtContainer() {}
+    inline explicit TSigMetaExtContainer(const Messages::TNodeSignal::TMessageId& aMessageId, RMetaExtensionContainerC& aConfig)
+        : Messages::TSignatureBase(aMessageId), iConfig(aConfig)
+        {
+        }
+    
+public:
+    DECLARE_MVIP_CTR( TSigMetaExtContainer )
+    EXPORT_DATA_VTABLE_AND_FN
+    RMetaExtensionContainerC iConfig;
+    };
+
+template<TInt id, TInt32 realm>
+class TMessageSigMetaExtContainer : public TSigMetaExtContainer, public Messages::TSignatureBase::TTypeToMessageId<id, realm>
+    {
+public:
+    explicit TMessageSigMetaExtContainer(RMetaExtensionContainerC& aConfig)
+        : TSigMetaExtContainer(Messages::TNodeSignal::TMessageId(id, realm), aConfig)
+        {
+        }
+    };
+
+
+
+template<TInt id, TInt32 realm>
+class TMessageSigFamilyBundleDefaultToNull : public TSigFamilyBundle, public Messages::TSignatureBase::TTypeToMessageId<id, realm>
+/**
+Message to carry a RCFParameterFamilyBundle.
+Can be instantiated with no parameters, in which case the null RCFParameterFamilyBundle is used
+*/
+    {
+public:
+	TMessageSigFamilyBundleDefaultToNull(const RCFParameterFamilyBundleC& aFamilyBundle = RCFParameterFamilyBundleC())
+	:	TSigFamilyBundle(Messages::TNodeSignal::TMessageId(id, realm), aFamilyBundle)
+		{}
+    };
+
+template<TInt id, TInt32 realm>
+class TMessageSigNumberDefaultFamilyBundleDefaultToNull : public TSigNumberFamilyBundle, public Messages::TSignatureBase::TTypeToMessageId<id, realm>
+/**
+Message to carry a Number and a RCFParameterFamilyBundle.
+Can be instantiated with no parameters, in which case 0 and the null RCFParameterFamilyBundle are used.
+*/
+    {
+public:
+	TMessageSigNumberDefaultFamilyBundleDefaultToNull(TInt aValue = 0, const RCFParameterFamilyBundleC& aFamilyBundle = RCFParameterFamilyBundleC())
+	:	TSigNumberFamilyBundle(Messages::TNodeSignal::TMessageId(id, realm), aValue, aFamilyBundle)
+		{}
+    };
+
+template<TInt id, TInt32 realm>
+class TCFMessageSigNodeIdClientTypeNumberDefault : public TSigNodeIdClientTypeNumber, public Messages::TSignatureBase::TTypeToMessageId<id, realm>
+	{
+public:
+	TCFMessageSigNodeIdClientTypeNumberDefault(Messages::TNodeId aNodeId, Messages::TClientType aClientType, TUint aValue = 0)
+	:	TSigNodeIdClientTypeNumber(Messages::TNodeSignal::TMessageId(id, realm), aNodeId, aClientType, aValue)
+		{}
+	};
+
+} //namespace ESock
+
+namespace Meta
+	{
+	// Ugly hack: mingw does not evaulate macros early enough to pass as template arguments so we hard code the
+	// value for the x86gcc platform.  A compile time assertion ensures that the value stays correct.
+	#if defined(__GCCXML__) || defined(__X86GCC__)
+		#define KSigPlayerRoleUidFactory_iQuery	20
+	#else
+		#define KSigPlayerRoleUidFactory_iQuery	( _FOFF(ESock::TSigPlayerRoleUidFactoryQuery, iQuery) )
+	#endif
+
+	__ASSERT_COMPILE( KSigPlayerRoleUidFactory_iQuery == _FOFF(ESock::TSigPlayerRoleUidFactoryQuery, iQuery) );
+
+	typedef Messages::TSignatureWithPolymorphicPayloadMetaType<ESock::TSigPlayerRoleUidFactoryQuery, KSigPlayerRoleUidFactory_iQuery, ESock::TVCFromSockManAttributeCreationPolicy> TMetaHandler;
+	}
+
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <addressupdate.h>
+#endif
+
+#endif //SYMBIAN_NODEMESSAGES_H
+