diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/inc/es_prot_internal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/inc/es_prot_internal.h Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,215 @@ +// 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: +// + +/** + @file + @InternalTechnology +*/ + +#ifndef __ES_PROT_INTERNAL_H__ +#define __ES_PROT_INTERNAL_H__ + +#include +#include + +/** +@internalComponent +*/ +enum TConnStartType + { + EConnStartExplicit, + EConnStartImplicit + }; + +/** +@internalComponent +*/ +enum TESOCKActivePriority + { + ESSExclusivePriority=100000, + ECommReceivePriority=200, //< Must always run. + ECommTransmitPriority=100, + ECAsyncImmediatePriority=75, //< I.e. before a timer event goes off. + ESocketTimerPriority=50, + EActiveIpcPriority=20, + EActiveHighPriority=10, + EActiveMedPriority=0, + EActiveLowPriority=-10, + ECAsyncDeferredPriority=-20, + EShutDownPriority=-100000, //< Lowest priority for shutdown, so that other async cleanup behaviours can complete first + }; + +/** +@internalComponent +*/ +enum TProtocolServiceInfo + { + ESocketSupport=0x00000001, //< Can make sockets + ETransport=0x00000002, //< Can act as a transport - ie can be bound to + EPreferMBufChains=0x00000004, //< Will process MBufChains (I.e. won't convert them to descriptors) + EPreferDescriptors=0x00000008, //< Will process Descriptors (I.e. won't convert them to MBufChains) + ECantProcessMBufChains=0x00000010, //< Will Panic if asked to process an MBufChain + ENeedMBufs=0x00000020, //< Uses MBufChains internally. + EUseCanSend=0x00000040, //< Uses the inter-protocol CanSend upcall. + EInterface=0x00000080, //< Is a CInterfaceBase rather than CProtocolBase + }; + + +/** +@internalTechnology +*/ +enum TProtocolType + { + ENormalProtocol, //< Normal protocol + EInterfaceProtocol //< Has EInterface flags set and supports GetBinderL() + }; + +/** Ensure that the requested length for datagrams is bigger than any real one. This ensures that +naive providers deliver them without truncation, so allowing the client to perform continuation reads. +@internalTechnology +*/ +const TUint KGetDataWholeDatagram = 0x40000000; + + +/** +Definition of argument to CConnectionProvdBase::SetUsageProfile() +Bitmap masks + +@internalTechnology +*/ +const TUint KConnProfileNone = 0; + + +/** +Definition of argument to CConnectionProvdBase::SetUsageProfile() +Bitmap masks + +@internalTechnology +*/ +const TUint KConnProfileLong = 1; + +/** +Definition of argument to CConnectionProvdBase::SetUsageProfile() +Bitmap masks + +@internalTechnology +*/ +const TUint KConnProfileMedium = 2; + + +class SocketTimer +/** +@internalComponent +*/ + { +public: + IMPORT_C static void Queue(TTimeIntervalMicroSeconds32 aTimeInMicroSeconds,TDeltaTimerEntry& aTimer); + IMPORT_C static void Remove(TDeltaTimerEntry& aTimer); + }; + +class CProtocolBase; +class SocketServExt +/** +@internalTechnology +*/ + { +public: + IMPORT_C static CProtocolBase* FindAndLoadProtocolL(const TDesC& aName, TProtocolType aType=ENormalProtocol); + IMPORT_C static CProtocolBase* FindAndLoadProtocolL(TUint aAddrFamily, TUint aSockType, TUint aProtocol); + IMPORT_C static void InstallExtensionL(const TDesC& aDllName, const TDesC& aArgs); + IMPORT_C static void OpenSession(); + IMPORT_C static void CloseSession(); + IMPORT_C static void InstallSchedulerWaitHook(TCallBack* aCall); + }; + +class CSocketServExtRef; +class CSocketServExtBase : public CBase +/** +Base class for extensions + +@internalTechnology +*/ + { +public: + IMPORT_C virtual ~CSocketServExtBase(); +protected: + IMPORT_C CSocketServExtBase(); +public: + virtual void InstallL(const TDesC& aArgs)=0; + virtual void Remove()=0; + // +private: + friend class CSocketServExtRef; + CSocketServExtRef* iExtRef; + }; + + +/** +KSoOwnerInfo + +Definition for internal SetOption() from ESock to Provider to communicate +socket owner information. + +@internalTechnology +@released +*/ +const TInt KSOLProvider = 2; + +const TUint KSoOwnerInfo = 1 | KSocketInternalOptionBit; + +/** +KSoConnectionInfo + +Definition for internal SetOption() from ESock to Provider to communicate +connection selection information. Note that the information is opaque +to ESock and comes from Nifman in the form of a TSoIfConnectionInfo class. +@internalTechnology +*/ +const TInt KSoConnectionInfo = 2 | KSocketInternalOptionBit; + +#ifdef SYMBIAN_NETWORKING_UPS +/** +KSoGetErrorCode + +Definition for internal GetOption() from ESock to Host Resolver Provider to retrieve +any specific error code needed to error the subsession with in certain +circumstances. +@internalTechnology +*/ +const TUint KSoGetErrorCode = 3 | KSocketInternalOptionBit; + +/** +KSoSetPlatSecApi + +Definition for internal SetOption() from ESock to Socket/Host Resolver Provider to send +a class instance that can be used to dynamically retrieve thread and process id information. +@internalTechnology +*/ +const TUint KSoSetPlatSecApi = 4 | KSocketInternalOptionBit; +#endif //SYMBIAN_NETWORKING_UPS + +/** +UID of Unicode Protocol Modules + +@internalTechnology +*/ +const TInt KUidUnicodeProtocolModule = 0x10003d38; + +/** @internalTechnology */ +const TInt KUidEsockExtension = 0x10000387; + + +#endif // __ES_PROT_INTERNAL_H__ +