multimediacommscontroller/tsrc/stubs/src/esock_stubs.cpp
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/tsrc/stubs/src/esock_stubs.cpp	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,552 @@
+/*
+* Copyright (c) 2003-2004 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:  
+*
+*/
+
+
+
+
+#include <comms-infras/nifprvar.h>
+#include <ES_SOCK.H>
+#include <es_sock_partner.h>
+//#include "SOCKMES.H"
+#include "ConnPref.h"
+//#include "ss_log.h"
+#include <ecom/ecom.h>
+#include <networking/qos3gpp_subconparams.h>
+
+using Meta::STypeId;
+
+////////////////////////////////////////////////////////////////////////////////
+// Socket Address
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C TSockAddr::TSockAddr()
+	: TBuf8<KMaxSockAddrSize>()
+/** Default constructor initialises the address to be zero-filled. */
+	{
+	SetLength(KMaxSockAddrSize);
+	SetFamily(KAFUnspec);
+	}
+
+EXPORT_C TSockAddr::TSockAddr(TUint aFamily)
+/**
+Constructs the address with the family member data specified.
+
+@released.
+@param aFamily, Address family of address object.
+*/
+	: TBuf8<KMaxSockAddrSize>()
+/** Constructs the address with the family member data specified.
+
+@param aFamily Address family Id. */
+	{
+	SetLength(KMaxSockAddrSize);
+	SetFamily(aFamily);
+	}
+
+EXPORT_C TUint TSockAddr::Family() const
+/** Gets the address family and thereby the type of address. The family may be 
+used to effect 'down-casting'.
+
+@return Address family Id. */
+	{
+	return BasePtr()->iFamily;
+	}
+
+EXPORT_C void TSockAddr::SetFamily(TUint aFamily)
+/** Sets the address family of an address.
+
+@param aFamily Address family Id. */
+	{
+	BasePtr()->iFamily = aFamily;
+	}
+
+EXPORT_C void TSockAddr::SetPort(TUint aPort)
+//
+// Set Generic Port
+//
+/** Sets the address port of an address.
+
+@param aPort New port value for address */
+	{
+	BasePtr()->iPort = aPort;
+	}
+
+EXPORT_C TUint TSockAddr::Port() const
+//
+// Get Generic Port
+//
+/** Gets the port value.
+
+@return Port value */
+	{
+	return BasePtr()->iPort;
+	}
+
+EXPORT_C TBool TSockAddr::CmpPort(const TSockAddr &anAddr) const
+/**
+Compare two ports.
+
+Compares ports in two addresses
+
+@param anAddr, socket address.
+@return ETrue if the ports match and EFalse if they do not 
+*/
+	{
+	return (BasePtr()->iFamily==anAddr.BasePtr()->iFamily) 
+		&& (BasePtr()->iPort==anAddr.BasePtr()->iPort);
+	}
+
+EXPORT_C void TSockAddr::SetUserLen(TInt aLen)
+//
+// Set descriptor length to actual length of
+// subclass.
+//
+/** Sets the length of data it appends after the base class' data. This function 
+is mainly intended for use in derived classes.
+
+@param aLen New length for appended data. */
+	{
+	SetLength(aLen+Align4(sizeof(SSockAddr)));
+	}
+
+EXPORT_C TInt TSockAddr::GetUserLen()
+//
+// Get length of user part of TSockAddr
+//
+/** Gets the number of bytes a derived class has set beyond the SSockAddr part 
+of the address. This function is mainly intended for use in derived classes.
+
+@return User length */
+	{
+	return Length()-Align4(sizeof(SSockAddr));
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// RConnection
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C RConnection::RConnection()
+	: iNewISPId(0)	//lint -esym(1401, RConnection::iReserved)	// no BC issue as ctor not inlined
+/** Empty constructor. */
+	{
+	}
+
+EXPORT_C RConnection::~RConnection()
+/** Empty destructor. */
+	{
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// RSocketServ
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C RSocketServ::RSocketServ()
+/**
+Default Constructor
+*/
+    {
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// RSocket
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C RSocket::RSocket()
+/**
+Default Constructor
+*/
+	{
+	}
+
+EXPORT_C TInt RSocket::SetOpt(TUint /*anOptionName*/,TUint /*anOptionLevel*/,const TDesC8& /*anOption*/ /*=TPtrC(NULL,0)*/)
+/** Sets a socket option. The socket server has options which are generic to all 
+sockets and protocols may add specific options.
+
+Options available for all protocols can be set with anOptionLevel set to KSOLSocket. 
+See individual protocol notes for other socket options. 
+
+@param anOptionName An integer constant which identifies an option.
+@param anOptionLevel An integer constant which identifies level of an option: 
+i.e. an option level groups related options together.
+@param anOption Option value packaged in a descriptor.
+@return KErrNone if successful, otherwise another of the system-wide error 
+codes. 
+
+@capability Dependent on the type of operation so deferred to PRT.  See documentation
+of constant values used in aOptionName and aOptionLevel for more information */
+	{
+//	return SendReceive(ESoSetOpt,TIpcArgs(anOptionName,&anOption,anOptionLevel));
+    return KErrNone;
+	}
+
+EXPORT_C TInt RSocket::SetOpt(TUint anOptionName,TUint anOptionLevel,TInt anOption)
+/** Sets a socket option. The socket server has options which are generic to all 
+sockets and protocols may add specific options.
+
+Options available for all protocols can be set with anOptionLevel set to KSOLSocket. 
+See individual protocol notes for other socket options. 
+
+@param anOptionName An integer constant which identifies an option.
+@param anOptionLevel An integer constant which identifies level of an option: 
+i.e. an option level groups related options together.
+@param anOption Option value as an integer.
+@return KErrNone if successful, otherwise another of the system-wide error 
+codes. 
+
+@capability Dependent on the type of operation so deferred to PRT.  See documentation
+of constant values used in aOptionName and aOptionLevel for more information */
+	{
+
+	TPtr8 optionDes((TUint8*)&anOption,sizeof(TInt),sizeof(TInt));
+	return SetOpt(anOptionName,anOptionLevel,optionDes);
+	}
+
+EXPORT_C void RSocket::LocalName(TSockAddr &/*anAddr*/)
+/** Gets the local address of a bound socket. 
+
+The local address is set either by calling Bind(), or is automatically set 
+when Connect() is called. 
+
+If a socket is created through Accept() then a socket will inherit the port 
+of its parent unless otherwise specified by a protocol's behaviour. 
+
+Depending on a protocol implementation, additional information may be gained 
+through this call.
+
+@param anAddr Local address which is filled in on return. */
+	{
+//	SendReceive(ESoGetLocalName,TIpcArgs(&anAddr));
+	}
+
+EXPORT_C TUint RSocket::LocalPort()
+/** Gets the local port number of a bound socket. 
+
+Getting the local port is similar to getting the local name.
+
+@see LocalName() for a description.
+@return The local port of a socket. */
+	{
+	TSockAddr addr;
+	LocalName(addr);
+	return addr.Port();
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// TNotificationEventBuf
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C TNotificationEventBuf::TNotificationEventBuf()
+	{
+	SetLength(this->MaxLength());
+	FillZ();
+	}
+
+EXPORT_C TNotificationEventBuf::~TNotificationEventBuf()
+	{
+	}
+	
+EXPORT_C TUint32 TNotificationEventBuf::Id() const
+/** Provides the sub-type Id of the event
+
+@return sub-type id
+*/
+	{
+	return *((TUint32*)(Ptr() + sizeof(TUint32)));
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// RSubConParameterBundle
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C RSubConParameterBundle::RSubConParameterBundle()
+	: iBundle(NULL)
+/** Empty sub-connection parameter bundle constructor
+*/
+	{
+	}
+
+EXPORT_C void RSubConParameterBundle::Close()
+/** Close the parameter bundle handle
+*/
+	{
+	if (iBundle)
+		{
+		iBundle->Close();
+		iBundle = NULL;
+		}
+	}
+
+EXPORT_C void RSubConParameterBundle::AddFamilyL(CSubConParameterFamily* aFamily)
+/** Add a sub-connection parameter family to the bundle.
+
+@param aFamily Family to be added (bundle takes ownership)
+@exception leaves with KErrNoMemory in out of memory conditions
+*/
+	{
+	User::LeaveIfError(CheckBundle());
+	iBundle->AddFamilyL(aFamily);
+	}
+
+TInt RSubConParameterBundle::CheckBundle() const
+/** Check to see if the handle has a heap object. If it hasn't, it creates one
+
+@return KErrNone if successful, otherwise a system wide error
+*/
+	{
+	if (!iBundle)
+		{
+		TRAPD(ret, iBundle = CSubConParameterBundle::NewL());
+		return ret;
+		}
+	return KErrNone;
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// CSubConParameterBundle
+////////////////////////////////////////////////////////////////////////////////
+
+CSubConParameterBundle::CSubConParameterBundle()
+/** Empty sub-connection generic parameter bundle constructor
+*/
+	{
+	}
+
+EXPORT_C CSubConParameterBundle::~CSubConParameterBundle()
+/** Sub-connection parameter bundle destructor, clear up the families
+*/
+	{
+	iFamilies.ResetAndDestroy();
+	}
+
+EXPORT_C CSubConParameterBundle* CSubConParameterBundle::NewL()
+/** Creates a new instance of a sub-connection parameter bundle (heap object)
+    Can be used directly as a CObject or via the RSubConParameterBundle handle.
+
+@return newly created instance of a sub-connection parameter bundle
+@exception leaves with KErrNoMemory in out of memory conditions
+*/
+	{
+	return new (ELeave) CSubConParameterBundle();
+	}
+
+EXPORT_C void CSubConParameterBundle::AddFamilyL(CSubConParameterFamily* aFamily)
+/** Add a sub-connection parameter family to the bundle.
+
+@param aFamily Family to be added (bundle takes ownership)
+@exception leaves with KErrNoMemory in out of memory conditions
+*/
+	{
+	iFamilies.AppendL(aFamily);
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// CSubConParameterFamily
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C CSubConParameterFamily* CSubConParameterFamily::NewL(RSubConParameterBundle& aBundle, TUint32 aFamilyId)
+/** Creates a new sub-connection parameter set family. This class is used as a container for a number of parameter
+    sets (generic and extension) that make up a family. It is a specific instantiatable class and therefore creates
+	an instance of CSubConParameterFamily without using ECOM. 
+
+@param aBundle Family container (bundle) that this family is to be added to
+@param aFamilyId identifier for the specific family type, currently only 2, QoS (KSubConQoSFamily) and Authorisation (KSubConAuthorisationFamily), are defined.
+@return a pointer to a sub-connection parameter family if successful, otherwise leaves with system error code.
+*/
+	{
+	CSubConParameterFamily* family = new (ELeave) CSubConParameterFamily(aFamilyId);
+	CleanupStack::PushL(family);
+	family->ConstructL(aBundle);
+	CleanupStack::Pop(family);
+	return family;
+	}
+
+CSubConParameterFamily::CSubConParameterFamily(TUint32 aFamilyId)
+	: iFamilyId(aFamilyId)
+/** Empty sub-connection parameter family constructor
+
+@param aFamilyId Identity of the family
+*/
+	{
+	}
+
+void CSubConParameterFamily::ConstructL(RSubConParameterBundle& aBundle)
+/** Set up the sub-connection family with empty sets
+
+@param aBundle Bundle (container) the family is to be added to
+@exception leaves with KErrNoMemory in out of memory conditions
+*/
+	{
+	iGenericSets.AppendL(NULL);
+	iGenericSets.AppendL(NULL);
+	iGenericSets.AppendL(NULL);
+	aBundle.AddFamilyL(this);
+	}
+
+EXPORT_C CSubConParameterFamily::~CSubConParameterFamily()
+/** Sub-connection parameter family destructor. It cleans up the arrays deleting all
+    the paarmeter sets it ownes
+*/
+	{
+	iGenericSets.ResetAndDestroy();
+	iExtensionSets[ERequested].ResetAndDestroy();
+	iExtensionSets[EAcceptable].ResetAndDestroy();
+	iExtensionSets[EGranted].ResetAndDestroy();
+	}
+
+EXPORT_C void CSubConParameterFamily::AddExtensionSetL(CSubConExtensionParameterSet& aExtensionSet, TParameterSetType aType)
+/**
+Adds an extension parameter set to a sub-connection parameter set family.
+
+@param aExtensionSet Extension Parameter Set to be added to the family (family takes ownership)
+@param aType The type of the set (requested, acceptable or granted)
+@exception leaves with KErrNoMemory in out of memeory conditions.
+*/
+	{
+	iExtensionSets[aType].AppendL(&aExtensionSet);
+	}
+
+
+EXPORT_C CSubConParameterSet* CSubConParameterSet::NewL(const STypeId& aTypeId)
+/** Creates a new sub-connection parameter set using ECOM to load the DLL plugin
+    that implements the set.
+
+@param aTypeId Id of the class (Composed of Uid of the implementation and an integer sub-type
+@return a generic pointer to a specific parameter set if successful, otherwise leaves with system error code.
+*/
+	{
+	return static_cast<CSubConParameterSet*>(Meta::SMetaDataECom::NewInstanceL(aTypeId));
+	}
+
+CSubConParameterSet::~CSubConParameterSet()
+/** Empty (virtual) sub-connection parameter set destructor
+*/
+	{
+	}
+
+CSubConParameterSet::CSubConParameterSet()
+/** Empty sub-connection parameter set constructor
+*/
+	{
+	}
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Meta::RMetaDataContainerBase
+////////////////////////////////////////////////////////////////////////////////
+
+
+EXPORT_C Meta::RMetaDataContainerBase::RMetaDataContainerBase()
+/**
+ * Constructor
+ */
+    {	
+    }
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Meta::SMetaDataECom
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C Meta::SMetaDataECom::SMetaDataECom()
+/**
+ * Protected and explicit constructor
+ */
+	{
+	iDestroyUid.iUid = 0;
+	}
+
+EXPORT_C Meta::SMetaDataECom::~SMetaDataECom()
+/**
+ * Destructor
+ */
+	{
+	if ( iDestroyUid.iUid )
+      {
+      REComSession::DestroyedImplementation(iDestroyUid);
+      }
+   }
+
+EXPORT_C SMetaDataECom* Meta::SMetaDataECom::NewInstanceL(const STypeId& aTypeId)
+/**
+ * Static, instantiates a meta object based on its Type ID.
+ */
+    {
+/*    
+	TUid destroyUid;
+	SMetaDataECom* obj = reinterpret_cast<SMetaDataECom*>(REComSession::CreateImplementationL(aTypeId.iUid, destroyUid, (TAny*)aTypeId.iType));
+	obj->iDestroyUid = destroyUid;
+*/	
+	SMetaDataECom* obj = reinterpret_cast<SMetaDataECom*>(REComSession::CreateImplementationL(aTypeId.iUid, (TInt32)0 ));
+	return obj;
+	}
+
+EXPORT_C SMetaDataECom* Meta::SMetaDataECom::LoadL(TPtrC8& aDes)
+/**
+ * Static, encapsulates instantiation and loading of a content of a meta object
+ * from data contained in a descriptor.
+ * This function must be provided by all meta objects that will be used as a parameter
+ * to TMetaPtr<> template.
+ */
+	{
+	STypeId typeId;
+	Mem::Copy(&typeId.iUid, aDes.Ptr(), sizeof(TUid));
+	aDes.Set(aDes.Ptr()+sizeof(TUint32),aDes.Length()-sizeof(TUint32)); //update pointer (uid)
+	Mem::Copy(&typeId.iType, aDes.Ptr(), sizeof(TInt32));
+	aDes.Set(aDes.Ptr()+sizeof(TUint32),aDes.Length()-sizeof(TUint32)); //update pointer (type)
+
+	SMetaDataECom* mtd = NewInstanceL(typeId);
+    return mtd;
+	}
+
+////////////////////////////////////////////////////////////////////////////////
+// Meta::SMetaData
+////////////////////////////////////////////////////////////////////////////////
+
+EXPORT_C Meta::SMetaData::SMetaData()
+/**
+ * Protected and explicit constructor
+ */
+    {
+    }
+
+EXPORT_C Meta::SMetaData::~SMetaData()
+/**
+ * Virtual destructor
+ */
+	{
+	}
+
+CSubConExtensionParameterSet::~CSubConExtensionParameterSet()
+    {
+        
+    }
+
+CSubConExtensionParameterSet::CSubConExtensionParameterSet()
+    {
+        
+    }
+
+Meta::SVDataTableEntry const* CSubConQosR99ParamSet::GetVDataTable() const
+    {
+        return NULL;
+    }
+
+TUint8* CSubConQosR99ParamSet::GetAttribPtr(const TInt /*aOffset*/) const
+    {
+        return NULL;
+    }
+