networkcontrol/ipcpr/inc/ipcprprovider.h
author hgs
Tue, 29 Jun 2010 19:20:22 +0530
changeset 37 052078dda061
permissions -rw-r--r--
201025_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37
052078dda061 201025_01
hgs
parents:
diff changeset
     1
/**
052078dda061 201025_01
hgs
parents:
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
052078dda061 201025_01
hgs
parents:
diff changeset
     3
* All rights reserved.
052078dda061 201025_01
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
052078dda061 201025_01
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
052078dda061 201025_01
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
052078dda061 201025_01
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
052078dda061 201025_01
hgs
parents:
diff changeset
     8
*
052078dda061 201025_01
hgs
parents:
diff changeset
     9
* Initial Contributors:
052078dda061 201025_01
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
052078dda061 201025_01
hgs
parents:
diff changeset
    11
*
052078dda061 201025_01
hgs
parents:
diff changeset
    12
* Contributors:
052078dda061 201025_01
hgs
parents:
diff changeset
    13
*
052078dda061 201025_01
hgs
parents:
diff changeset
    14
* Description:
052078dda061 201025_01
hgs
parents:
diff changeset
    15
* This class is an example implementation of a bearer-mobile network session layer. It is intended as a guide only and does
052078dda061 201025_01
hgs
parents:
diff changeset
    16
* not employ any advanced bearer selection algorithms.
052078dda061 201025_01
hgs
parents:
diff changeset
    17
* This is part of an ECOM plug-in
052078dda061 201025_01
hgs
parents:
diff changeset
    18
* 
052078dda061 201025_01
hgs
parents:
diff changeset
    19
*
052078dda061 201025_01
hgs
parents:
diff changeset
    20
*/
052078dda061 201025_01
hgs
parents:
diff changeset
    21
052078dda061 201025_01
hgs
parents:
diff changeset
    22
052078dda061 201025_01
hgs
parents:
diff changeset
    23
052078dda061 201025_01
hgs
parents:
diff changeset
    24
/**
052078dda061 201025_01
hgs
parents:
diff changeset
    25
 @file IPCPRPROVIDER.H
052078dda061 201025_01
hgs
parents:
diff changeset
    26
 @internalComponent
052078dda061 201025_01
hgs
parents:
diff changeset
    27
*/
052078dda061 201025_01
hgs
parents:
diff changeset
    28
052078dda061 201025_01
hgs
parents:
diff changeset
    29
#if !defined(__SS_IPCPRPROVIDER_H__)
052078dda061 201025_01
hgs
parents:
diff changeset
    30
#define __SS_IPCPRPROVIDER_H__
052078dda061 201025_01
hgs
parents:
diff changeset
    31
052078dda061 201025_01
hgs
parents:
diff changeset
    32
#include "ipcprfactory.h"	// for CIPConnectionSelector
052078dda061 201025_01
hgs
parents:
diff changeset
    33
#include <es_sock.h>
052078dda061 201025_01
hgs
parents:
diff changeset
    34
#include <es_prot.h>
052078dda061 201025_01
hgs
parents:
diff changeset
    35
#include <ss_connprov.h>	// for CConnectionProviderBase and MConnectionControlClient
052078dda061 201025_01
hgs
parents:
diff changeset
    36
#include <comms-infras/ss_log.h>			// for KESockConnectionTag
052078dda061 201025_01
hgs
parents:
diff changeset
    37
052078dda061 201025_01
hgs
parents:
diff changeset
    38
#ifdef SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
    39
052078dda061 201025_01
hgs
parents:
diff changeset
    40
#include "MAppIdInfo.h"
052078dda061 201025_01
hgs
parents:
diff changeset
    41
052078dda061 201025_01
hgs
parents:
diff changeset
    42
#endif
052078dda061 201025_01
hgs
parents:
diff changeset
    43
052078dda061 201025_01
hgs
parents:
diff changeset
    44
#define KIpcprTag KESockConnectionTag
052078dda061 201025_01
hgs
parents:
diff changeset
    45
_LIT8(KIpcprSubTag, "ipcpr");		// logging tag
052078dda061 201025_01
hgs
parents:
diff changeset
    46
052078dda061 201025_01
hgs
parents:
diff changeset
    47
052078dda061 201025_01
hgs
parents:
diff changeset
    48
	
052078dda061 201025_01
hgs
parents:
diff changeset
    49
052078dda061 201025_01
hgs
parents:
diff changeset
    50
class CConnectionSettings;
052078dda061 201025_01
hgs
parents:
diff changeset
    51
/**
052078dda061 201025_01
hgs
parents:
diff changeset
    52
 @internalComponent
052078dda061 201025_01
hgs
parents:
diff changeset
    53
 @released Since 9.1
052078dda061 201025_01
hgs
parents:
diff changeset
    54
 */
052078dda061 201025_01
hgs
parents:
diff changeset
    55
#ifdef SYMBIAN_NETWORKING_UMTSR5
052078dda061 201025_01
hgs
parents:
diff changeset
    56
NONSHARABLE_CLASS(CIPNetworkConnectionProvider) : public CConnectionProviderBase, public MConnectionControlClient, 
052078dda061 201025_01
hgs
parents:
diff changeset
    57
												  public MConnectionAppIdInfo
052078dda061 201025_01
hgs
parents:
diff changeset
    58
	{
052078dda061 201025_01
hgs
parents:
diff changeset
    59
#else // SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
    60
052078dda061 201025_01
hgs
parents:
diff changeset
    61
NONSHARABLE_CLASS(CIPNetworkConnectionProvider) : public CConnectionProviderBase, public MConnectionControlClient
052078dda061 201025_01
hgs
parents:
diff changeset
    62
	{
052078dda061 201025_01
hgs
parents:
diff changeset
    63
052078dda061 201025_01
hgs
parents:
diff changeset
    64
#endif // SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
    65
052078dda061 201025_01
hgs
parents:
diff changeset
    66
public:
052078dda061 201025_01
hgs
parents:
diff changeset
    67
	static CIPNetworkConnectionProvider* NewL(CConnectionProviderFactoryBase& aFactory);
052078dda061 201025_01
hgs
parents:
diff changeset
    68
	
052078dda061 201025_01
hgs
parents:
diff changeset
    69
#ifdef SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
    70
	// Interface from MConnectionAppIdInfo
052078dda061 201025_01
hgs
parents:
diff changeset
    71
	virtual TUint32 GetAppSecureId(); 
052078dda061 201025_01
hgs
parents:
diff changeset
    72
052078dda061 201025_01
hgs
parents:
diff changeset
    73
	void SetAppSecurId(TUint32 aSecureId);
052078dda061 201025_01
hgs
parents:
diff changeset
    74
#endif // SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
    75
   
052078dda061 201025_01
hgs
parents:
diff changeset
    76
protected:
052078dda061 201025_01
hgs
parents:
diff changeset
    77
	CIPNetworkConnectionProvider(CConnectionProviderFactoryBase& aFactory) :
052078dda061 201025_01
hgs
parents:
diff changeset
    78
		CConnectionProviderBase(aFactory)
052078dda061 201025_01
hgs
parents:
diff changeset
    79
			{
052078dda061 201025_01
hgs
parents:
diff changeset
    80
      	__CFLOG_VAR((KIpcprTag, KIpcprSubTag, _L8("CIPNetworkConnectionProvider [this=%08x]:\tCIPNetworkConnectionProvider [MConnectionControlClient=%08x]"),
052078dda061 201025_01
hgs
parents:
diff changeset
    81
      	   this, (MConnectionControlClient*)this));
052078dda061 201025_01
hgs
parents:
diff changeset
    82
			}
052078dda061 201025_01
hgs
parents:
diff changeset
    83
	~CIPNetworkConnectionProvider();
052078dda061 201025_01
hgs
parents:
diff changeset
    84
	
052078dda061 201025_01
hgs
parents:
diff changeset
    85
	/////////////////////////////////////////////////////////////////////////////
052078dda061 201025_01
hgs
parents:
diff changeset
    86
	// from MConnectionControlClient
052078dda061 201025_01
hgs
parents:
diff changeset
    87
	virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider);
052078dda061 201025_01
hgs
parents:
diff changeset
    88
	virtual void ProgressNotification(TInt aStage, TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
    89
	virtual void ConnectionError(TInt aStage,  TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
    90
	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
052078dda061 201025_01
hgs
parents:
diff changeset
    91
	virtual void SubConnectionEvent(CSubConnectionProviderBase* aSubConnNextLayerProvider, const TSubConnectionEvent& aSubConnectionEvent);
052078dda061 201025_01
hgs
parents:
diff changeset
    92
	virtual void LayerUp(TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
    93
	virtual TCtlType CtlType() const;
052078dda061 201025_01
hgs
parents:
diff changeset
    94
052078dda061 201025_01
hgs
parents:
diff changeset
    95
	////////////////////////////////////////////////////////////////////////////
052078dda061 201025_01
hgs
parents:
diff changeset
    96
	// from CConnectionProviderBase
052078dda061 201025_01
hgs
parents:
diff changeset
    97
#ifdef SYMBIAN_NETWORKING_UMTSR5		
052078dda061 201025_01
hgs
parents:
diff changeset
    98
	virtual TAny* DoFetchInterfaceInstanceL( const STypeId& aTid );
052078dda061 201025_01
hgs
parents:
diff changeset
    99
#endif	
052078dda061 201025_01
hgs
parents:
diff changeset
   100
	
052078dda061 201025_01
hgs
parents:
diff changeset
   101
	virtual void DoDataClientJoiningL(MConnectionDataClient& aDataClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   102
	virtual void DoDataClientLeaving(MConnectionDataClient& aDataClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   103
	virtual void DoControlClientJoiningL(MConnectionControlClient& aControlClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   104
	virtual void DoControlClientLeaving(MConnectionControlClient& aControlClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   105
052078dda061 201025_01
hgs
parents:
diff changeset
   106
	virtual void DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage);	
052078dda061 201025_01
hgs
parents:
diff changeset
   107
	virtual TInt DoStop(TInt aError, const RMessagePtr2* aMessage);   
052078dda061 201025_01
hgs
parents:
diff changeset
   108
052078dda061 201025_01
hgs
parents:
diff changeset
   109
	virtual void DoProgressL(Meta::SMetaData& aBuffer) const;
052078dda061 201025_01
hgs
parents:
diff changeset
   110
	virtual void DoLastProgressError(Meta::SMetaData& aBuffer);
052078dda061 201025_01
hgs
parents:
diff changeset
   111
	virtual void DoRequestServiceChangeNotificationL();
052078dda061 201025_01
hgs
parents:
diff changeset
   112
	virtual void DoCancelServiceChangeNotification();
052078dda061 201025_01
hgs
parents:
diff changeset
   113
	virtual void DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage);
052078dda061 201025_01
hgs
parents:
diff changeset
   114
	virtual TInt DoAllSubConnectionNotificationEnable();
052078dda061 201025_01
hgs
parents:
diff changeset
   115
	virtual TInt DoCancelAllSubConnectionNotification();
052078dda061 201025_01
hgs
parents:
diff changeset
   116
	virtual void DoSendIoctlMessageL(const RMessage2& aMessage);
052078dda061 201025_01
hgs
parents:
diff changeset
   117
	virtual void DoSendCancelIoctl();   
052078dda061 201025_01
hgs
parents:
diff changeset
   118
	virtual TInt DoEnumerateSubConnectionsL(TUint& aCount);
052078dda061 201025_01
hgs
parents:
diff changeset
   119
	virtual TUint DoEnumerateClientsL(HBufC8*& aClientInfoBuffer, TEnumClients aClientType);
052078dda061 201025_01
hgs
parents:
diff changeset
   120
	virtual void DoConnectionControlActivityL( TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage );
052078dda061 201025_01
hgs
parents:
diff changeset
   121
052078dda061 201025_01
hgs
parents:
diff changeset
   122
	virtual CConnectionSettings& DoSettingsAccessL();
052078dda061 201025_01
hgs
parents:
diff changeset
   123
052078dda061 201025_01
hgs
parents:
diff changeset
   124
	virtual TInt DoCanDoSubConnection(RSubConnection::TSubConnType aSubConnType) const;
052078dda061 201025_01
hgs
parents:
diff changeset
   125
052078dda061 201025_01
hgs
parents:
diff changeset
   126
	virtual CConnectionProviderBase* DoNextLayer() const;
052078dda061 201025_01
hgs
parents:
diff changeset
   127
	virtual void DoJoinNextLayerL(CConnectionProviderBase* aNextLayer);
052078dda061 201025_01
hgs
parents:
diff changeset
   128
052078dda061 201025_01
hgs
parents:
diff changeset
   129
protected:
052078dda061 201025_01
hgs
parents:
diff changeset
   130
	void UpdateUsageProfile(MConnectionControlClient* aControlClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   131
052078dda061 201025_01
hgs
parents:
diff changeset
   132
private:
052078dda061 201025_01
hgs
parents:
diff changeset
   133
	CConnectionProviderBase* iShimCpr;
052078dda061 201025_01
hgs
parents:
diff changeset
   134
	TMetaDes8* iMDes;
052078dda061 201025_01
hgs
parents:
diff changeset
   135
#ifdef SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
   136
	// Added as per the requirements of PREQ 635 to block sockets
052078dda061 201025_01
hgs
parents:
diff changeset
   137
	TUint32		iAppSecureId;
052078dda061 201025_01
hgs
parents:
diff changeset
   138
#endif // SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
   139
	};
052078dda061 201025_01
hgs
parents:
diff changeset
   140
052078dda061 201025_01
hgs
parents:
diff changeset
   141
#endif // __SS_IPCPRPROVIDER_H__