networkcontrol/ipcprshim/inc/shimcpr.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 temporary shim layer contanis the interfaces defined by MConnectionNotify, CConnectionProvdBase and CInterface.
052078dda061 201025_01
hgs
parents:
diff changeset
    16
* However only the connection-related part of CInterface appears here, the rest is in CNifManSubConnectionShim.
052078dda061 201025_01
hgs
parents:
diff changeset
    17
* 
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
 @file SHIMCPR.H
052078dda061 201025_01
hgs
parents:
diff changeset
    25
 @internalComponent
052078dda061 201025_01
hgs
parents:
diff changeset
    26
*/
052078dda061 201025_01
hgs
parents:
diff changeset
    27
052078dda061 201025_01
hgs
parents:
diff changeset
    28
#if !defined(__SS_SHIMCPR_H__)
052078dda061 201025_01
hgs
parents:
diff changeset
    29
#define __SS_SHIMCPR_H__
052078dda061 201025_01
hgs
parents:
diff changeset
    30
052078dda061 201025_01
hgs
parents:
diff changeset
    31
#include <ss_connprov.h>		// for CConnectionProviderFactoryBase
052078dda061 201025_01
hgs
parents:
diff changeset
    32
#include <cflog.h>
052078dda061 201025_01
hgs
parents:
diff changeset
    33
#include <es_prot.h>			// for MConnectionNotify and CConnectionProvdBase
052078dda061 201025_01
hgs
parents:
diff changeset
    34
#include <comms-infras/ss_log.h>				// for KESockConnectionTag
052078dda061 201025_01
hgs
parents:
diff changeset
    35
052078dda061 201025_01
hgs
parents:
diff changeset
    36
#define KShimCprTag KESockConnectionTag
052078dda061 201025_01
hgs
parents:
diff changeset
    37
_LIT8(KShimCprSubTag, "shimcpr");	// logging tag
052078dda061 201025_01
hgs
parents:
diff changeset
    38
052078dda061 201025_01
hgs
parents:
diff changeset
    39
052078dda061 201025_01
hgs
parents:
diff changeset
    40
class CConnectionProvdBase;
052078dda061 201025_01
hgs
parents:
diff changeset
    41
class CNifManSubConnectionShim;
052078dda061 201025_01
hgs
parents:
diff changeset
    42
class CConnectionProviderFactoryShim;
052078dda061 201025_01
hgs
parents:
diff changeset
    43
class CConnectionSettingsShim;
052078dda061 201025_01
hgs
parents:
diff changeset
    44
class CConnection;
052078dda061 201025_01
hgs
parents:
diff changeset
    45
class MProviderSelector;
052078dda061 201025_01
hgs
parents:
diff changeset
    46
class CSubConnectionLinkShimClient;
052078dda061 201025_01
hgs
parents:
diff changeset
    47
class CConnectionSelectorShim;
052078dda061 201025_01
hgs
parents:
diff changeset
    48
NONSHARABLE_CLASS(CConnectionProviderShim) : public CConnectionProviderBase, MConnectionNotify
052078dda061 201025_01
hgs
parents:
diff changeset
    49
	{
052078dda061 201025_01
hgs
parents:
diff changeset
    50
  	friend class CConnectionProviderFactoryShim;
052078dda061 201025_01
hgs
parents:
diff changeset
    51
  	friend class CConnectionSelectorShim; //to get/set the aggregarted CConnectionProvdBase
052078dda061 201025_01
hgs
parents:
diff changeset
    52
052078dda061 201025_01
hgs
parents:
diff changeset
    53
052078dda061 201025_01
hgs
parents:
diff changeset
    54
public:
052078dda061 201025_01
hgs
parents:
diff changeset
    55
	CConnectionProvdBase& Provider()
052078dda061 201025_01
hgs
parents:
diff changeset
    56
		{
052078dda061 201025_01
hgs
parents:
diff changeset
    57
		ASSERT(iProvider);
052078dda061 201025_01
hgs
parents:
diff changeset
    58
		return *iProvider;
052078dda061 201025_01
hgs
parents:
diff changeset
    59
		}
052078dda061 201025_01
hgs
parents:
diff changeset
    60
	CSubConnectionLinkShimClient* QuerySubSessions(TInt32 aTypeId, const CConnection* aConnection);
052078dda061 201025_01
hgs
parents:
diff changeset
    61
052078dda061 201025_01
hgs
parents:
diff changeset
    62
#ifdef SYMBIAN_NETWORKING_UMTSR5
052078dda061 201025_01
hgs
parents:
diff changeset
    63
	// The public function which will set the pointer to the factiory
052078dda061 201025_01
hgs
parents:
diff changeset
    64
	void SetFactoryIfactory(CConnectionProviderFactoryShim *aFactoryShim);
052078dda061 201025_01
hgs
parents:
diff changeset
    65
#endif // SYMBIAN_NETWORKING_UMTSR5	
052078dda061 201025_01
hgs
parents:
diff changeset
    66
      
052078dda061 201025_01
hgs
parents:
diff changeset
    67
protected:
052078dda061 201025_01
hgs
parents:
diff changeset
    68
	virtual ~CConnectionProviderShim();
052078dda061 201025_01
hgs
parents:
diff changeset
    69
	
052078dda061 201025_01
hgs
parents:
diff changeset
    70
052078dda061 201025_01
hgs
parents:
diff changeset
    71
#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
052078dda061 201025_01
hgs
parents:
diff changeset
    72
	CConnectionProviderShim(CConnectionProviderFactoryBase& aFactory)
052078dda061 201025_01
hgs
parents:
diff changeset
    73
	   : CConnectionProviderBase(aFactory), iSubConnectionType(KInvalidFactoryId)
052078dda061 201025_01
hgs
parents:
diff changeset
    74
	    {
052078dda061 201025_01
hgs
parents:
diff changeset
    75
	    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tCConnectionProviderShim()"),
052078dda061 201025_01
hgs
parents:
diff changeset
    76
			this));
052078dda061 201025_01
hgs
parents:
diff changeset
    77
	    }    
052078dda061 201025_01
hgs
parents:
diff changeset
    78
#else
052078dda061 201025_01
hgs
parents:
diff changeset
    79
	CConnectionProviderShim(CConnectionProviderFactoryBase& aFactory)
052078dda061 201025_01
hgs
parents:
diff changeset
    80
	   : CConnectionProviderBase(aFactory)
052078dda061 201025_01
hgs
parents:
diff changeset
    81
	    {
052078dda061 201025_01
hgs
parents:
diff changeset
    82
	    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tCConnectionProviderShim()"),
052078dda061 201025_01
hgs
parents:
diff changeset
    83
			this));
052078dda061 201025_01
hgs
parents:
diff changeset
    84
	    }	
052078dda061 201025_01
hgs
parents:
diff changeset
    85
#endif
052078dda061 201025_01
hgs
parents:
diff changeset
    86
// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
052078dda061 201025_01
hgs
parents:
diff changeset
    87
052078dda061 201025_01
hgs
parents:
diff changeset
    88
	    
052078dda061 201025_01
hgs
parents:
diff changeset
    89
    void ConstructL();
052078dda061 201025_01
hgs
parents:
diff changeset
    90
    static CConnectionProviderShim* NewL(CConnectionProviderFactoryBase& aFactory);
052078dda061 201025_01
hgs
parents:
diff changeset
    91
052078dda061 201025_01
hgs
parents:
diff changeset
    92
	void ConnectionJoiningL( const CConnection& aConnection );
052078dda061 201025_01
hgs
parents:
diff changeset
    93
	void ConnectionLeaving( const CConnection& aConnection );
052078dda061 201025_01
hgs
parents:
diff changeset
    94
	
052078dda061 201025_01
hgs
parents:
diff changeset
    95
	
052078dda061 201025_01
hgs
parents:
diff changeset
    96
	      
052078dda061 201025_01
hgs
parents:
diff changeset
    97
protected:
052078dda061 201025_01
hgs
parents:
diff changeset
    98
	// Define methods from the interface specified by MConnectionNotify
052078dda061 201025_01
hgs
parents:
diff changeset
    99
	virtual void SelectionComplete(TInt aError, const TDesC8& aSelectionInfo);
052078dda061 201025_01
hgs
parents:
diff changeset
   100
	virtual void ConnectionError(TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
   101
	virtual void LinkLayerOpen(TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
   102
	virtual void LinkLayerClosed(TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
   103
	virtual void ProgressNotification(TInt aStage, TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
   104
	virtual void ProgressNotification(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
052078dda061 201025_01
hgs
parents:
diff changeset
   105
	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
052078dda061 201025_01
hgs
parents:
diff changeset
   106
	virtual void InterfaceStateChangeNotification(TDesC8& aInfo);
052078dda061 201025_01
hgs
parents:
diff changeset
   107
	virtual void NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume);
052078dda061 201025_01
hgs
parents:
diff changeset
   108
	virtual void NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume);
052078dda061 201025_01
hgs
parents:
diff changeset
   109
	virtual void SubConnectionEvent(const TSubConnectionEvent& aSubConnectionEvent);
052078dda061 201025_01
hgs
parents:
diff changeset
   110
	
052078dda061 201025_01
hgs
parents:
diff changeset
   111
	virtual TBool ShouldIDeleteNow();
052078dda061 201025_01
hgs
parents:
diff changeset
   112
	
052078dda061 201025_01
hgs
parents:
diff changeset
   113
protected:
052078dda061 201025_01
hgs
parents:
diff changeset
   114
	//CConnectionProviderBase virtuals
052078dda061 201025_01
hgs
parents:
diff changeset
   115
	virtual void DoDataClientJoiningL(MConnectionDataClient& aDataClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   116
	virtual void DoDataClientLeaving(MConnectionDataClient& aDataClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   117
	virtual void DoControlClientJoiningL(MConnectionControlClient& aControlClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   118
	virtual void DoControlClientLeaving(MConnectionControlClient& aControlClient);
052078dda061 201025_01
hgs
parents:
diff changeset
   119
   
052078dda061 201025_01
hgs
parents:
diff changeset
   120
	virtual void DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage);	
052078dda061 201025_01
hgs
parents:
diff changeset
   121
	virtual TInt DoStop(TInt aError, const RMessagePtr2* aMessage);
052078dda061 201025_01
hgs
parents:
diff changeset
   122
052078dda061 201025_01
hgs
parents:
diff changeset
   123
	virtual TInt DoCanDoSubConnection(RSubConnection::TSubConnType aSubConnType) const;
052078dda061 201025_01
hgs
parents:
diff changeset
   124
052078dda061 201025_01
hgs
parents:
diff changeset
   125
	virtual CConnectionProviderBase* DoNextLayer() const ;
052078dda061 201025_01
hgs
parents:
diff changeset
   126
	virtual void DoJoinNextLayerL(CConnectionProviderBase* aNextLayer);
052078dda061 201025_01
hgs
parents:
diff changeset
   127
052078dda061 201025_01
hgs
parents:
diff changeset
   128
	virtual void DoProgressL(Meta::SMetaData& aBuffer) const;
052078dda061 201025_01
hgs
parents:
diff changeset
   129
	virtual void DoLastProgressError(Meta::SMetaData& aBuffer);
052078dda061 201025_01
hgs
parents:
diff changeset
   130
	virtual void DoRequestServiceChangeNotificationL();
052078dda061 201025_01
hgs
parents:
diff changeset
   131
	virtual void DoCancelServiceChangeNotification();
052078dda061 201025_01
hgs
parents:
diff changeset
   132
	virtual void DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage);
052078dda061 201025_01
hgs
parents:
diff changeset
   133
	virtual TInt DoAllSubConnectionNotificationEnable();
052078dda061 201025_01
hgs
parents:
diff changeset
   134
	virtual TInt DoCancelAllSubConnectionNotification();
052078dda061 201025_01
hgs
parents:
diff changeset
   135
  	virtual void DoSendIoctlMessageL(const RMessage2& aMessage);
052078dda061 201025_01
hgs
parents:
diff changeset
   136
  	virtual void DoSendCancelIoctl();
052078dda061 201025_01
hgs
parents:
diff changeset
   137
	virtual TInt DoEnumerateSubConnectionsL(TUint& aCount);
052078dda061 201025_01
hgs
parents:
diff changeset
   138
	virtual TUint DoEnumerateClientsL(HBufC8*& aClientInfoBuffer, TEnumClients aClientType);
052078dda061 201025_01
hgs
parents:
diff changeset
   139
	virtual void DoConnectionControlActivityL( TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage );
052078dda061 201025_01
hgs
parents:
diff changeset
   140
	virtual CConnectionSettings& DoSettingsAccessL();
052078dda061 201025_01
hgs
parents:
diff changeset
   141
052078dda061 201025_01
hgs
parents:
diff changeset
   142
    CConnectionProvdBase* GetNifSession();
052078dda061 201025_01
hgs
parents:
diff changeset
   143
    void InitialiseL(CConnectionProvdBase* aStarterSession);
052078dda061 201025_01
hgs
parents:
diff changeset
   144
    void SetBlockProgressesL(CConnectionProvdBase* aStarterSession);
052078dda061 201025_01
hgs
parents:
diff changeset
   145
    void AddRefL(CConnectionSelectorShim* aSelector);
052078dda061 201025_01
hgs
parents:
diff changeset
   146
    void ReleaseRef(CConnectionSelectorShim* aSelector);    
052078dda061 201025_01
hgs
parents:
diff changeset
   147
    
052078dda061 201025_01
hgs
parents:
diff changeset
   148
private:
052078dda061 201025_01
hgs
parents:
diff changeset
   149
	CNifManSubConnectionShim* FindSubConnection(TSubConnectionUniqueId aId);
052078dda061 201025_01
hgs
parents:
diff changeset
   150
	void ReleaseRef();
052078dda061 201025_01
hgs
parents:
diff changeset
   151
052078dda061 201025_01
hgs
parents:
diff changeset
   152
private:
052078dda061 201025_01
hgs
parents:
diff changeset
   153
	CConnectionProvdBase *iProvider; // Enable access to 'old' NIFMAN layer
052078dda061 201025_01
hgs
parents:
diff changeset
   154
	CConnectionSettingsShim* iConnectionSettings;
052078dda061 201025_01
hgs
parents:
diff changeset
   155
	TUint iUsageProfile;
052078dda061 201025_01
hgs
parents:
diff changeset
   156
	RPointerArray<const CConnection> iConnections;
052078dda061 201025_01
hgs
parents:
diff changeset
   157
	// TInt iRefCount; //to keep a connection up while selection is going on
052078dda061 201025_01
hgs
parents:
diff changeset
   158
	RPointerArray<CNifManSubConnectionShim> iNifManSubConnections;
052078dda061 201025_01
hgs
parents:
diff changeset
   159
#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
052078dda061 201025_01
hgs
parents:
diff changeset
   160
    TInt iSubConnectionType;
052078dda061 201025_01
hgs
parents:
diff changeset
   161
#endif // SYMBIAN_NETWORKING_3GPPDEFAULTQOS
052078dda061 201025_01
hgs
parents:
diff changeset
   162
	RPointerArray<CConnectionSelectorShim> iSelectors;
052078dda061 201025_01
hgs
parents:
diff changeset
   163
	TBool iHasAnyControlClientJoined:1;
052078dda061 201025_01
hgs
parents:
diff changeset
   164
	TBool iIsAlreadyUninitialised:1;
052078dda061 201025_01
hgs
parents:
diff changeset
   165
#ifdef SYMBIAN_NETWORKING_UMTSR5
052078dda061 201025_01
hgs
parents:
diff changeset
   166
	// The handle to the factory object that creates the CConnectionProviderShim
052078dda061 201025_01
hgs
parents:
diff changeset
   167
	CConnectionProviderFactoryShim *iFactoryShim;
052078dda061 201025_01
hgs
parents:
diff changeset
   168
#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5
052078dda061 201025_01
hgs
parents:
diff changeset
   169
052078dda061 201025_01
hgs
parents:
diff changeset
   170
052078dda061 201025_01
hgs
parents:
diff changeset
   171
};
052078dda061 201025_01
hgs
parents:
diff changeset
   172
052078dda061 201025_01
hgs
parents:
diff changeset
   173
#endif
052078dda061 201025_01
hgs
parents:
diff changeset
   174
// __SS_SHIMCPR_H__