epoc32/include/es_sock.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
     1.1 --- a/epoc32/include/es_sock.h	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/es_sock.h	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -1,9 +1,9 @@
     1.4  // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5  // All rights reserved.
     1.6  // This component and the accompanying materials are made available
     1.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     1.8 +// under the terms of "Eclipse Public License v1.0"
     1.9  // which accompanies this distribution, and is available
    1.10 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.12  //
    1.13  // Initial Contributors:
    1.14  // Nokia Corporation - initial contribution.
    1.15 @@ -13,8 +13,6 @@
    1.16  // Description:
    1.17  //
    1.18  
    1.19 -
    1.20 -
    1.21  /**
    1.22   @file
    1.23   @publishedAll
    1.24 @@ -34,6 +32,11 @@
    1.25  #endif
    1.26  
    1.27  #include <comms-infras/metacontainer.h>
    1.28 +#include <elements/sd_errors.h>
    1.29 +#include <comms-infras/es_parameterset.h>
    1.30 +
    1.31 +#include <comms-infras/es_event.h>
    1.32 +
    1.33  using Meta::STypeId;
    1.34  using Meta::SMetaDataECom;
    1.35  using Meta::RMetaDataEComContainer;
    1.36 @@ -46,12 +49,6 @@
    1.37  }
    1.38  
    1.39  /**
    1.40 -Name of ESock server in EKA2
    1.41 -@internalComponent
    1.42 -*/
    1.43 -_LIT(SOCKET_SERVER_NAME, "!SocketServer");
    1.44 -
    1.45 -/**
    1.46  Canonical names for the core ESOCKSVR modules
    1.47  */
    1.48  _LIT8(SOCKET_SERVER_MAIN_MODULE_NAME, "ESock_Main");		// Worker 0
    1.49 @@ -60,11 +57,28 @@
    1.50  _LIT8(SOCKET_SERVER_IR_MODULE_NAME, "ESock_Ir");			// Worker 3
    1.51  _LIT8(SOCKET_SERVER_SMSWAP_MODULE_NAME, "ESock_SmsWap");	// Worker 4
    1.52  
    1.53 +
    1.54  /**
    1.55 -Id of the network layer.
    1.56 -@publishedPartner
    1.57 +Progress Notification to inform clients Connection is up
    1.58 +This event has the same numerical values as 
    1.59 +KLinkLayerOpen which is deprecated
    1.60 +@publishedAll
    1.61 +@released
    1.62  */
    1.63 -const TUint KCommsNetworkLayerId = 1;
    1.64 +
    1.65 +const TUint KConnectionUp    = 7000;    
    1.66 +/**
    1.67 +Progress Notification to inform clients Connection is up
    1.68 +This event has the same numerical values as 
    1.69 +KLinkLayerClosed which is deprecated 
    1.70 +
    1.71 +@publishedAll
    1.72 +@released
    1.73 +*/
    1.74 +
    1.75 +const TUint KConnectionDown  = 8000;  
    1.76 +
    1.77 +      
    1.78  
    1.79  /**
    1.80  Default number of message slots.
    1.81 @@ -73,32 +87,12 @@
    1.82  */
    1.83  const TUint KESockDefaultMessageSlots=8;
    1.84  
    1.85 -/**
    1.86 -Major Version Number of Connection
    1.87 -
    1.88 -@internalComponent
    1.89 -*/
    1.90 -const TUint KConnectionMajorVersionNumber=1;
    1.91 -
    1.92 -/**
    1.93 -Minor Version Number of Connection
    1.94 -
    1.95 -@internalComponent
    1.96 -*/
    1.97 -const TUint KConnectionMinorVersionNumber=0;
    1.98 -
    1.99 -/**
   1.100 -Build Version Number of Connection
   1.101 -this must not be changed - expected by TCPIP to be >=68
   1.102 -
   1.103 -@internalComponent
   1.104 -*/
   1.105 -const TUint KConnectionBuildVersionNumber=68;
   1.106  
   1.107  /**
   1.108  Size of Maximum SubConnection event
   1.109  
   1.110 -@internalComponent
   1.111 +@publishedAll
   1.112 +@released
   1.113  @note If you allocate this on the heap, remember to delete through the pointer to the buffer and not any pointers to the events held inside it
   1.114  if you change this value, you will alter the function signature and break the .def file
   1.115  */
   1.116 @@ -106,6 +100,9 @@
   1.117  
   1.118  /**
   1.119  SubConnection Unique Id
   1.120 +
   1.121 +THIS API IS TO BE DEPRECATED
   1.122 +
   1.123  @publishedPartner
   1.124  @released
   1.125  */
   1.126 @@ -113,14 +110,17 @@
   1.127  
   1.128  /**
   1.129  Buffer for  notification of any change in the state of  SubConnection.
   1.130 +
   1.131 +THIS API IS TO BE DEPRECATED
   1.132 +
   1.133  @publishedPartner
   1.134  @released
   1.135  */
   1.136  typedef TBuf8<KMaxSubConnectionEventSize> TSubConnectionNotificationBuf;
   1.137  //
   1.138 -const TUint KUseEmbeddedUniqueId = 0; ///< Used by RConnection to identify cases where the subconnection id is embedded in the data structure
   1.139 +const TUint KUseEmbeddedUniqueId = 0; //< Used by RConnection to identify cases where the subconnection id is embedded in the data structure
   1.140  
   1.141 -const TUint KConnProgressDefault = 0; ///< Default Connection Progress
   1.142 +const TUint KConnProgressDefault = 0; //< Default Connection Progress
   1.143  
   1.144  class TSessionPref
   1.145  /**
   1.146 @@ -160,6 +160,8 @@
   1.147  	{
   1.148  public:
   1.149  	inline TNifProgress();
   1.150 +	inline TNifProgress(TInt aStage, TInt aError);
   1.151 +	inline TBool operator==(const TNifProgress& aRHS) const;
   1.152  	TInt iStage;
   1.153  	TInt iError;
   1.154  	};
   1.155 @@ -336,7 +338,11 @@
   1.156  support urgent data).
   1.157  Value is a TInt. */
   1.158  const TUint KSOUrgentDataOffset=8;
   1.159 -/** Getting only: retrieves the last error. Value is a TInt. */
   1.160 +/** 
   1.161 +Getting only: retrieves the last error. 
   1.162 +Errors are normally reported by the called method and behaviour is protocol dependent.
   1.163 +KSOSelectLastError does not return such errors.
   1.164 +Value is a TInt. */
   1.165  const TUint KSOSelectLastError=9;
   1.166  
   1.167  
   1.168 @@ -362,17 +368,8 @@
   1.169  const TInt  KSocketDefaultBufferSize=4096;
   1.170  
   1.171  //internal
   1.172 -const TUint KSocketInternalOptionBit=0x80000000;	///< Must not be set for client requests
   1.173 +const TUint KSocketInternalOptionBit=0x80000000;	//< Must not be set for client requests
   1.174  
   1.175 -/**
   1.176 -Ioctls
   1.177 -
   1.178 -Must not be set for client requests
   1.179 -
   1.180 -@internalComponent
   1.181 -@released
   1.182 -*/
   1.183 -const TUint KInternalIoctlBit=0x80000000;
   1.184  
   1.185  /** The aDesc parameter of RSocket::Ioctl() specifies a TUint containing a bitmask
   1.186  of Socket status constants. The completion status will be the subset of those
   1.187 @@ -443,7 +440,7 @@
   1.188  // TServerProtocolDesc and TProtocolDesc
   1.189  //
   1.190  /** The protocol is connectionless.
   1.191 -@publishedPartner
   1.192 +@publishedAll
   1.193  @released */
   1.194  const TUint KSIConnectionLess=0x00000001;
   1.195  /** The protocol is reliable. */
   1.196 @@ -483,8 +480,11 @@
   1.197  const TUint KSIPeekData=0x00010000;
   1.198  /** Protocol is to be informed of the identity of the client (i.e. process ID,
   1.199  thread ID and UID) of each SAP (i.e. Socket Service Provider) created.
   1.200 +Note that this value has no meaningful interpretation on the client side.
   1.201  @see KSoOwnerInfo and TSoOwnerInfo */
   1.202  const TUint KSIRequiresOwnerInfo=0x00020000;	// SetOption(KSoOwnerInfo) invoked on each SAP
   1.203 +/** @internalTechnology */
   1.204 +const TUint KSIReserved=0xFFFC0000;
   1.205  
   1.206  //
   1.207  // Naming service constants
   1.208 @@ -493,13 +493,13 @@
   1.209  //
   1.210  /** Protocol supports resolving human readable entity names into network addresses
   1.211  (like DNS).
   1.212 -@publishedPartner
   1.213 +@publishedAll
   1.214  @released */
   1.215  const TUint KNSNameResolution=0x00000001;
   1.216  /** Network naming is hierarchical. */
   1.217  const TUint KNSHierarchicalNaming=0x00000002;
   1.218  /** @deprecated Use KNSHierarchicalNaming instead. */
   1.219 -const TUint KNSHeirarchicalNaming=0x00000002;
   1.220 +const TUint KNSHeirarchicalNaming=KNSHierarchicalNaming;
   1.221  /** Addressing is dynamic and should be attempted every time before connecting
   1.222  (like IrDA). */
   1.223  const TUint KNSRemoteDiscovery=0x00000004;
   1.224 @@ -516,8 +516,12 @@
   1.225  /** Protocol has another database which is defined by the protocol. */
   1.226  const TUint KNSInfoDatabase=0x00000080;
   1.227  /** Protocol may request Socket Server to startup a connection on its behalf (via
   1.228 -the KErrCompletion error code)*/
   1.229 +the KErrCompletion error code)
   1.230 +Note that this value has no meaningful interpretation on the client side.
   1.231 +*/
   1.232  const TUint KNSRequiresConnectionStartup=0x00000100;
   1.233 +/** @internalTechnology */
   1.234 +const TUint KNSReserved=0xFFFFFE00;
   1.235  
   1.236  // Security Schemes
   1.237  // The following constants are defined for
   1.238 @@ -557,6 +561,12 @@
   1.239  @released */
   1.240  const TUint KUndefinedProtocol=0xFFFFFFFE;
   1.241  
   1.242 +/** Undefined address family
   1.243 +@publishedPartner
   1.244 +@released
   1.245 + */
   1.246 +const TUint KUndefinedAddressFamily = 0;
   1.247 +
   1.248  /** Contains the name of a protocol in structure TProtocolDesc.
   1.249  @publishedAll
   1.250  @released */
   1.251 @@ -633,56 +643,45 @@
   1.252  */
   1.253  const TInt KErrConnectionTerminated=-17210;
   1.254  
   1.255 -const TInt KErrCannotFindProtocol = -17211;
   1.256 +const TInt KErrCannotFindProtocol = Den::KErrPlayerNotFound;
   1.257 +const TInt KErrTierNotFound = -17212;
   1.258 +const TInt KErrConnectionContention = -17213;
   1.259 +
   1.260 +/**
   1.261 +The protocol requested for the socket was recognised but was not able to be used.
   1.262 +This can happen with protocols that require specific settings to have been prepared
   1.263 +prior to the socket being opened.
   1.264 +
   1.265 +@publishedAll
   1.266 +@released
   1.267 +*/ 
   1.268 +const TInt KErrProtocolNotReady = -17214;
   1.269 +
   1.270 +// -17215 used for non published error. Do not use here.
   1.271 +
   1.272  
   1.273  /** Used in RSocket read and write calls to pass the length of data read and written.
   1.274  @publishedAll
   1.275  @released */
   1.276  typedef TPckgBuf<TInt> TSockXfrLength;
   1.277  
   1.278 -class TSockIO
   1.279 -/**
   1.280 -IPC Data holder
   1.281  
   1.282 -@internalComponent
   1.283 -*/
   1.284 +
   1.285 +namespace ESockDebug
   1.286  	{
   1.287 -public:
   1.288 -	const TSockXfrLength* iLength;  ///< length of data read and written
   1.289 -	TUint iFlags;                   ///<  Flag
   1.290 -	TSockAddr* iAddr;               ///< Socket Address
   1.291 -	};
   1.292 -
   1.293 -class TSockIOBufC : public TPckgC<TSockIO>
   1.294 -/** @internalComponent */
   1.295 -	{
   1.296 -public:
   1.297 -	inline TSockIOBufC();
   1.298 -	TSockIO iArgs;
   1.299 -	};
   1.300 -
   1.301 -class TSockOpen
   1.302 -/** @internalComponent */
   1.303 -	{
   1.304 -public:
   1.305 -	TUint iAddrFamily;
   1.306 -	TUint iSockType;
   1.307 -	TUint iProtocol;
   1.308 -	TInt  iHandle;
   1.309 -	TInt  iReserved;
   1.310 -	};
   1.311 -
   1.312 -class TSockOpenBufC : public TPckgC<TSockOpen>
   1.313 -/** @internalComponent */
   1.314 -	{
   1.315 -public:
   1.316 -	inline TSockOpenBufC();
   1.317 -	TSockOpen iArgs;
   1.318 -	};
   1.319 +	class TControlMsg;
   1.320 +	}
   1.321  
   1.322  class RSocket;
   1.323  class RConnection;
   1.324 -class RSocketServ : public RSessionBase
   1.325 +
   1.326 +NONSHARABLE_CLASS(RCommsSession) : public RSessionBase
   1.327 +	{
   1.328 +	friend class RCommsApiExtensionBase;
   1.329 +	friend class CCommsSessionApiExtProvider;
   1.330 +	};
   1.331 +
   1.332 +class RSocketServ : public RCommsSession
   1.333  /** Provides the Connect() function to create an IPC communication channel to the
   1.334  socket server. To close the channel RHandleBase provides a RHandleBase::Close()
   1.335  function.
   1.336 @@ -729,11 +728,13 @@
   1.337  	IMPORT_C TInt __DbgCheckMbuf(TInt asize);
   1.338  	IMPORT_C TInt __DbgMbufFreeSpace();
   1.339  	IMPORT_C TInt __DbgMbufTotalSpace();
   1.340 +	IMPORT_C TInt __DbgControl(const ESockDebug::TControlMsg& aRequestMsg);
   1.341  	};
   1.342  
   1.343  NONSHARABLE_CLASS(RCommsSubSession) : public RSubSessionBase
   1.344  	{
   1.345  	friend class RCommsApiExtensionBase;
   1.346 +	friend class CCommsSubSessionApiExtProvider;
   1.347  	};
   1.348  
   1.349  class RSubConnection;
   1.350 @@ -759,7 +760,8 @@
   1.351  	{
   1.352  friend class RSocketServ;
   1.353  public:
   1.354 -	/** Used in structure TProtocolDesc to describes the endianness of a protocol. */
   1.355 +	/** Argument to RSocket::Shutdown() specifying how abruptly the shutdown occurs.
   1.356 +	*/
   1.357  	enum TShutdown
   1.358  		{
   1.359  		/** Complete when socket output/input stopped. */
   1.360 @@ -789,6 +791,7 @@
   1.361  	IMPORT_C void Recv(TDes8& aDesc,TUint flags,TRequestStatus& aStatus,TSockXfrLength& aLen);
   1.362  
   1.363  	IMPORT_C void RecvOneOrMore(TDes8& aDesc,TUint flags,TRequestStatus& aStatus,TSockXfrLength& aLen);
   1.364 +	IMPORT_C void RecvOneOrMore(TDes8& aDesc,TUint flags,TRequestStatus& aStatus);
   1.365  	IMPORT_C void CancelRecv();
   1.366  
   1.367  	IMPORT_C void Read(TDes8& aDesc,TRequestStatus& aStatus);
   1.368 @@ -839,10 +842,13 @@
   1.369  	{
   1.370  public:
   1.371  	inline TNameRecord();
   1.372 -	/**
   1.373 -	@internalComponent
   1.374 -	*/
   1.375 -	enum {EAlias=0x00000001,};
   1.376 +
   1.377 +	enum
   1.378 +	{
   1.379 +	EAlias=0x00000001,
   1.380 +	EPartial=0x00000002, 	/*!< Indicates a partial (truncated) host name. */
   1.381 +	
   1.382 +	};
   1.383  	/** A host name
   1.384  
   1.385  	@see THostName */
   1.386 @@ -908,6 +914,7 @@
   1.387      IMPORT_C TInt Query(const TDesC8& aQuery, TDes8& aResult);
   1.388      IMPORT_C void QueryGetNext(TDes8& aResult, TRequestStatus& aStatus);
   1.389      IMPORT_C TInt QueryGetNext(TDes8& aResult);
   1.390 +    IMPORT_C TInt SetOpt(TUint anOptionName,TUint anOptionLevel,const TDesC8& anOption=TPtrC8(NULL,0));
   1.391  
   1.392  private:
   1.393  	};
   1.394 @@ -970,51 +977,6 @@
   1.395  private:
   1.396  	};
   1.397  
   1.398 -/**
   1.399 -@publishedPartner
   1.400 -@released
   1.401 -*/
   1.402 -
   1.403 -const TUint KCOLConnection = 1;						// level for RConnection::Control()
   1.404 -const TUint KCOLProvider = 2;						// level for RConnection::Control()
   1.405 -const TUint KConnInternalOptionBit = 0x80000000;	// Must not be set for client requests
   1.406 -const TUint KConnWriteUserDataBit = 0x40000000;
   1.407 -const TUint KConnReadUserDataBit = 0x20000000;
   1.408 -
   1.409 -/**
   1.410 -Level for RConnection::Control()
   1.411 -
   1.412 -@publishedPartner
   1.413 -@deprecated in 8.1
   1.414 -@capability NetworkControl Restrict access to connection clients
   1.415 -@ref RConnection::Control()
   1.416 -*/
   1.417 -const TUint KCoEnumerateConnectionClients  =  1 | (KConnWriteUserDataBit | KConnReadUserDataBit);
   1.418 -
   1.419 -/**
   1.420 -Level for RConnection::Control()
   1.421 -Information about client
   1.422 -
   1.423 -@publishedPartner
   1.424 -@deprecated in 8.1
   1.425 -@capability NetworkControl Restrict access to connection client info
   1.426 -@ref RConnection::Control()
   1.427 -*/
   1.428 -const TUint KCoGetConnectionClientInfo     =  2 | (KConnWriteUserDataBit | KConnReadUserDataBit);
   1.429 -
   1.430 -/** @internalTechnology */
   1.431 -const TUint KCoEnumerateConnectionSockets  =  3 | (KConnWriteUserDataBit | KConnReadUserDataBit);
   1.432 -
   1.433 -/**
   1.434 -Level for RConnection::Control()
   1.435 -Information about connected socket
   1.436 -
   1.437 -@publishedPartner
   1.438 -@deprecated
   1.439 -@capability NetworkControl Restrict access to socket info on a connection
   1.440 -@ref RConnection::Control()
   1.441 -*/
   1.442 -const TUint KCoGetConnectionSocketInfo     =  4 | (KConnWriteUserDataBit | KConnReadUserDataBit);
   1.443  
   1.444  /**
   1.445  Default connection type
   1.446 @@ -1023,20 +985,6 @@
   1.447  */
   1.448  const TUint KConnectionTypeDefault = 0x0800;		// KAfInet is the default connection type
   1.449  
   1.450 -/**
   1.451 -Setting only: enable processes to "clone" open this RConnection instance via a call to
   1.452 -RConnection::Open(..., TName&), as long as they conform to the security policy
   1.453 -passed as argument (specified as a TSecurityPolicyBuf).
   1.454 -@internalTechnology
   1.455 -*/
   1.456 -const TUint KCoEnableCloneOpen				= 5 | (KConnReadUserDataBit);
   1.457 -
   1.458 -/**
   1.459 -Setting only: disable "clone" open of this RConnection instance, which was enabled via
   1.460 -a previous KCoEnableCloneOpen option.
   1.461 -@internalTechnology
   1.462 -*/
   1.463 -const TUint KCoDisableCloneOpen				= 6 | (KConnReadUserDataBit);
   1.464  
   1.465  class TConnPref;
   1.466  class TSubConnectionInfo;
   1.467 @@ -1157,17 +1105,35 @@
   1.468  	IMPORT_C void ServiceChangeNotification(TUint32& aNewISPId, TDes& aNewServiceType, TRequestStatus& aStatus);
   1.469  	IMPORT_C void CancelServiceChangeNotification();
   1.470  
   1.471 +	
   1.472 +	/**
   1.473 +	@deprecated Since SymbianOS v9.5
   1.474 +	*/
   1.475  	IMPORT_C TInt GetIntSetting(const TDesC& aSettingName, TUint32& aValue);
   1.476 +
   1.477 +	/**
   1.478 +	@deprecated Since SymbianOS v9.5
   1.479 +	*/
   1.480  	IMPORT_C TInt GetBoolSetting(const TDesC& aSettingName, TBool& aValue);
   1.481 +
   1.482 +	/**
   1.483 +	@deprecated Since SymbianOS v9.5
   1.484 +	*/
   1.485  	IMPORT_C TInt GetDesSetting(const TDesC& aSettingName, TDes8& aValue);
   1.486 +
   1.487 +	/**
   1.488 +	@deprecated Since SymbianOS v9.5
   1.489 +	*/
   1.490  	IMPORT_C TInt GetDesSetting(const TDesC& aSettingName, TDes16& aValue);
   1.491 +
   1.492 +	/**
   1.493 +	@deprecated Since SymbianOS v9.5
   1.494 +	*/
   1.495  	IMPORT_C TInt GetLongDesSetting(const TDesC& aSettingName, TDes& aValue);
   1.496  
   1.497  
   1.498 -	/**
   1.499 -	@prototype SymbianOS v9.4
   1.500 -	*/
   1.501  	IMPORT_C TInt GetParameters(ESock::CCommsDataObjectBase& aDataObject);
   1.502 +	IMPORT_C TInt SetParameters(ESock::CCommsDataObjectBase& aDataObject);
   1.503  
   1.504  	IMPORT_C TInt Name(TName& aName);
   1.505  
   1.506 @@ -1215,11 +1181,13 @@
   1.507  	TUint32 iReserved[4];
   1.508  	};
   1.509  
   1.510 -class CSubConParameterSet : public SMetaDataECom
   1.511 +class CSubConParameterSet : public XParameterSetBase
   1.512  /** Base class for all RSubConnection parameter sets.
   1.513  
   1.514 +THIS API IS DEPRECATED IN FAVOUR OF XParameterSet
   1.515 +
   1.516  @publishedAll
   1.517 -@released since v9.0 */
   1.518 +@deprecated since v9.6 */
   1.519  	{
   1.520  public:
   1.521  	IMPORT_C static CSubConParameterSet* NewL(const STypeId& aTypeId);
   1.522 @@ -1233,8 +1201,10 @@
   1.523  class CSubConGenericParameterSet : public CSubConParameterSet
   1.524  /** Base class for generic RSubConnection parameter sets.
   1.525  
   1.526 +THIS API IS DEPRECATED IN FAVOUR OF XParameterSet
   1.527 +
   1.528  @publishedAll
   1.529 -@released since v9.0 */
   1.530 +@deprecated since v9.6 */
   1.531  	{
   1.532  public:
   1.533  	IMPORT_C ~CSubConGenericParameterSet();
   1.534 @@ -1246,8 +1216,10 @@
   1.535  class CSubConExtensionParameterSet : public CSubConParameterSet
   1.536  /** Base class for extended RSubConnection parameter sets.
   1.537  
   1.538 +THIS API IS DEPRECATED IN FAVOUR OF XParameterSet
   1.539 +
   1.540  @publishedAll
   1.541 -@released since v9.0 */
   1.542 +@deprecated since v9.6 */
   1.543  	{
   1.544  public:
   1.545  	IMPORT_C ~CSubConExtensionParameterSet();
   1.546 @@ -1265,13 +1237,17 @@
   1.547  const TInt32 KSubConnGenericParamsImplUid  = 0x10204304;
   1.548  const TInt32 KSubConnGenericEventsImplUid  = 0x10204306;
   1.549  
   1.550 -const TUint32 KSubConGlobalFamily = 0;
   1.551 -const TUint32 KSubConQoSFamily = 1;
   1.552 -const TUint32 KSubConAuthorisationFamily = 2;
   1.553 -const TUint32 KSubConnCallDescrParamsFamily = 3;
   1.554 -#ifdef SYMBIAN_NETWORKING_UMTSR5
   1.555 -const TUint32 KSubConnContextDescrParamsFamily = 4;
   1.556 -#endif //SYMBIAN_NETWORKING_UMTSR5
   1.557 +const TUint32 KSubConGlobalFamily 				= 0;
   1.558 +const TUint32 KSubConQoSFamily 					= 1;
   1.559 +const TUint32 KSubConAuthorisationFamily 		= 2;
   1.560 +const TUint32 KSubConnCallDescrParamsFamily 	= 3;
   1.561 +const TUint32 KSubConnContextDescrParamsFamily 	= 4;
   1.562 +
   1.563 +const TUint32 KSubConIPAddressInfoFamily 		= 5;
   1.564 +
   1.565 +const TInt32 KProtocolExtensionFamily 		= 6;
   1.566 +const TInt32 KFlowParametersFamily 		= 7;
   1.567 +class RParameterFamily;
   1.568  
   1.569  class CSubConParameterFamily : public CBase
   1.570  /** Container of RSubConnection parameter sets.
   1.571 @@ -1279,8 +1255,16 @@
   1.572  For each Parameter Type (Requested, Acceptable and Granted) it
   1.573  contains one generic and 0..N extended parameter sets.
   1.574  
   1.575 +Note:
   1.576 +a CSubConParameterBundle or RSubConParameterBundle object can take ownership of a 
   1.577 +CSubConParameterFamily object, in this case, when the bundle is destroyed, this 
   1.578 +family object will also be destroyed  (along with any parameter sets that are owned 
   1.579 +by the family).
   1.580 +
   1.581 +THIS API IS DEPRECATED IN FAVOUR OF RParameterFamily
   1.582 +
   1.583  @publishedAll
   1.584 -@released since v9.0 */
   1.585 +@deprecated since v9.6 */
   1.586  	{
   1.587  public:
   1.588  
   1.589 @@ -1314,59 +1298,47 @@
   1.590  	IMPORT_C TInt Store(TDes8& aDes) const;
   1.591  	IMPORT_C void ClearAllParameters(TParameterSetType aType);
   1.592  
   1.593 +	/**
   1.594 +	Copy the parameters of this CSubConParameterFamily to a RParameterFamily.
   1.595 +	@param aDest RParameterFamily object to copy to
   1.596 +	*/
   1.597 +	void CopyToFamilyL(RParameterFamily& aDest) const;
   1.598 +
   1.599 +    /**
   1.600 +	Copy the parameters of this CSubConParameterFamily from a RParameterFamily.
   1.601 +	@param aSrc RParameterFamily object to copy from
   1.602 +	*/
   1.603 +	void CopyFromFamilyL(RParameterFamily& aSrc);
   1.604  protected:
   1.605 -	explicit CSubConParameterFamily(TUint32 aFamilyId);
   1.606 -	void ConstructL(RSubConParameterBundle& aBundle);
   1.607 -	void ConstructL(CSubConParameterBundle& aBundle);
   1.608 +	IMPORT_C explicit CSubConParameterFamily(TUint32 aFamilyId);
   1.609 +	IMPORT_C void ConstructL(RSubConParameterBundle& aBundle);
   1.610 +	IMPORT_C void ConstructL(CSubConParameterBundle& aBundle);
   1.611  
   1.612 -	static TInt32 ExtractFamilyAndCreateBufferL(TPtrC8& aBuffer, TPtrC8& aContainerBuffer);
   1.613 +	IMPORT_C static TInt32 ExtractFamilyAndCreateBufferL(TPtrC8& aBuffer, TPtrC8& aContainerBuffer);
   1.614  
   1.615  private:
   1.616 -	const TUint32 iFamilyId;
   1.617 +	const TUint32 iFamilyId;   // This member variable is accessed by an inline function ( Id () ).
   1.618  	RMetaDataEComContainer iGenericSets;
   1.619 +protected:
   1.620  	RMetaDataEComContainer iExtensionSets[ENumValues];
   1.621 +
   1.622  	};
   1.623  
   1.624 -class CSubConParameterBundle : public CObject
   1.625 -/** Container for (bundle of) SubConnection parameter families.
   1.626 -
   1.627 -May contain and 0..N parameter families.
   1.628 -
   1.629 -@publishedPartner
   1.630 -@released since v9.0 */
   1.631 -	{
   1.632 -public:
   1.633 -	IMPORT_C static CSubConParameterBundle* NewL();
   1.634 -	IMPORT_C static CSubConParameterBundle* LoadL(TDesC8& aDes);
   1.635 -
   1.636 -	IMPORT_C ~CSubConParameterBundle();
   1.637 -
   1.638 -	IMPORT_C TUint Length() const;
   1.639 -	IMPORT_C TInt Load(const TDesC8& aDes);
   1.640 -	IMPORT_C TInt Store(TDes8& aDes) const;
   1.641 -	IMPORT_C void AddFamilyL(CSubConParameterFamily* aFamily);
   1.642 -	IMPORT_C CSubConParameterFamily* FindFamily(TUint32 aFamilyId);
   1.643 -	IMPORT_C void ClearAllParameters(CSubConParameterFamily::TParameterSetType aType);
   1.644 -
   1.645 -protected:
   1.646 -	CSubConParameterBundle();
   1.647 -
   1.648 -private:
   1.649 -	CSubConParameterBundle(const CSubConParameterBundle& aBundle);
   1.650 -	CSubConParameterBundle& operator=(const CSubConParameterBundle& aBundle);
   1.651 -
   1.652 -private:
   1.653 -	RPointerArray<CSubConParameterFamily> iFamilies;
   1.654 -	};
   1.655 -
   1.656 +class RParameterFamilyBundle;
   1.657  class RSubConParameterBundle
   1.658  /** Container for (bundle of) SubConnection parameter families.
   1.659  
   1.660  May contain and 0..N SubConnection parameter families.
   1.661  
   1.662 +Note:
   1.663 +If the RSubConParameterBundle object takes ownership of any CSubConParameterFamily object, 
   1.664 +then when the bundle object is destroyed, any family owned by this object will also be 
   1.665 +destroyed.
   1.666 +
   1.667 +THIS API IS DEPRECATED IN FAVOUR OF RParameterFamilyBundle
   1.668  
   1.669  @publishedAll
   1.670 -@released since v9.0 */
   1.671 +@deprecated since v9.6 */
   1.672  	{
   1.673  public:
   1.674  	IMPORT_C RSubConParameterBundle();
   1.675 @@ -1379,6 +1351,18 @@
   1.676  	IMPORT_C CSubConParameterFamily* FindFamily(TUint32 aFamilyId);
   1.677  	IMPORT_C void ClearAllParameters(CSubConParameterFamily::TParameterSetType aType);
   1.678  
   1.679 +    /**
   1.680 +    Copy the contents of this parameter bundle to a RParameterFamilyBundle.
   1.681 +	@param aDest RParameterFamilyBundle to copy parameters to
   1.682 +	*/
   1.683 +	void CopyToFamilyBundleL(RParameterFamilyBundle& aDest) const;
   1.684 +
   1.685 +	/**
   1.686 +	Copy the contents of an RParameterFamilyBundle to this RSubConParameterBundle
   1.687 +	@param aSrc RParameterFamilyBundle to copy contents from
   1.688 +	*/
   1.689 +	void CopyFromFamilyBundleL(RParameterFamilyBundle& aSrc);
   1.690 +
   1.691  protected:
   1.692  	TInt CheckBundle() const;
   1.693  private:
   1.694 @@ -1389,6 +1373,7 @@
   1.695  	mutable CSubConParameterBundle* iBundle;
   1.696  	};
   1.697  
   1.698 +
   1.699  const TInt KNotificationEventMaxSize = 2048;
   1.700  class TNotificationEventBuf : public TBuf8<KNotificationEventMaxSize>
   1.701  /**
   1.702 @@ -1407,7 +1392,11 @@
   1.703  	IMPORT_C TUint32 Id() const;
   1.704  	};
   1.705  
   1.706 +#ifndef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
   1.707  class CSubConNotificationEvent : public SMetaDataECom
   1.708 +#else
   1.709 +class CSubConNotificationEvent : public ESock::XEventBase
   1.710 +#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
   1.711  	{
   1.712  public:
   1.713  	IMPORT_C static CSubConNotificationEvent* NewL(const STypeId& aTypeId);
   1.714 @@ -1439,10 +1428,10 @@
   1.715  	TInt  iReserved;
   1.716  	};
   1.717  
   1.718 -class RSubConnection : public RSubSessionBase
   1.719 +class RSubConnection : public RCommsSubSession
   1.720  /** A Sub-Connection, a channel within a Connection. A representation of a channel between this device and remote devices with which we are communicating. This channel will be used by one or more sockets.
   1.721   Depending on the state of the channel, it may not be possible to bind arbitary sockets into it.  Attempts to bind sockets from different protocol families to a single channel is an error, as each channel can only be used by one protocol family.
   1.722 - @note The sub-connection can represent a end-to-end channel and/or a channel from this device to an intermediate device (e.g an access server such as a GGSN which using UMTS and PDP contexts. Properties can be specified simultaneously on protocol and link level.
   1.723 + @note The sub-connection can represent a end-to-end channel and/or a channel from this device to an intermediate device (e.g an access server such as a GGSN which using UMTS and PDP contexts. Properties can be specified simultaneously on protocol and link level.)
   1.724  
   1.725  Before using any of these services, a connection to a socket server session
   1.726  must have been made and the connection must be open.
   1.727 @@ -1456,7 +1445,8 @@
   1.728  	enum TSubConnType
   1.729  		{
   1.730  		EAttachToDefault,
   1.731 -		ECreateNew
   1.732 +		ECreateNew,
   1.733 +		EWaitIncoming
   1.734  		};
   1.735  
   1.736  	struct TEventFilter
   1.737 @@ -1473,16 +1463,20 @@
   1.738  	IMPORT_C void Close();
   1.739  	IMPORT_C void Start(TRequestStatus& aStatus);
   1.740  	IMPORT_C TInt Start();
   1.741 -	IMPORT_C TInt Stop();
   1.742 +	IMPORT_C TInt Stop();		
   1.743  
   1.744  	// Socket Management
   1.745  	IMPORT_C void Add(RSocket& aSocket, TRequestStatus& aStatus);
   1.746  	IMPORT_C void Remove(RSocket& aSocket, TRequestStatus& aStatus);
   1.747  
   1.748 -	// QoS Properties
   1.749 +	// QoS Properties (legacy bundles - to be deprecated)
   1.750  	IMPORT_C TInt SetParameters(const RSubConParameterBundle& aParametersSet);
   1.751  	IMPORT_C TInt GetParameters(RSubConParameterBundle& aParametersSet);
   1.752  
   1.753 +	// QoS Properties (new prototype bundles)
   1.754 +	IMPORT_C TInt SetParameters(const RParameterFamilyBundle& aParametersSet);
   1.755 +	IMPORT_C TInt GetParameters(RParameterFamilyBundle& aParametersSet);
   1.756 +
   1.757  	// Event Notification
   1.758  	IMPORT_C void EventNotification(TNotificationEventBuf& aEventBuffer, TBool aGenericEventsOnly, TRequestStatus& aStatus);
   1.759  	IMPORT_C void EventNotification(TNotificationEventBuf& aEventBuffer, TEventFilter aEventFilterList[], TUint aEventListLength, TRequestStatus& aStatus);
   1.760 @@ -1490,6 +1484,15 @@
   1.761  
   1.762  	// Generic Control
   1.763  	IMPORT_C TInt Control(TUint aOptionLevel, TUint aOptionName, TDes8& aOption);
   1.764 +		
   1.765 +	//
   1.766 +	// IMPORT_C TInt Stop(TConnStopType aStopType);
   1.767 +	// IMPORT_C void ProgressNotification(TNifProgressBuf& aProgress, TRequestStatus& aStatus, TUint aSelectedProgress = KConnProgressDefault);
   1.768 +	// IMPORT_C void CancelProgressNotification();
   1.769 +	// IMPORT_C TInt Progress(TNifProgress& aProgress);
   1.770 +	// IMPORT_C void IsSubConnectionActiveRequest(TUint aSecs, TPckg<TBool>& aState, TRequestStatus& aStatus);
   1.771 +	// IMPORT_C void IsSubConnectionActiveCancel();	
   1.772 +	//	
   1.773  
   1.774  	TBool SameSession(TInt aSessionHandle);
   1.775  
   1.776 @@ -1538,7 +1541,9 @@
   1.777  
   1.778  class TAccessPointInfo
   1.779  /** Stores Access Point information.
   1.780 -@publishedAll */
   1.781 +@publishedAll
   1.782 +@released
   1.783 +*/
   1.784  	{
   1.785  public:
   1.786  	TAccessPointInfo(TUint aApId = 0);
   1.787 @@ -1551,6 +1556,13 @@
   1.788  	TUint iAccessPointId;
   1.789  	};
   1.790  
   1.791 +
   1.792 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
   1.793 +#include <es_sock_internal.h>
   1.794 +#include <es_sock_partner.h>
   1.795 +#endif
   1.796 +
   1.797  #include <es_sock.inl>
   1.798  
   1.799  #endif	//__ES_SOCK_H__
   1.800 +