networkcontrol/ipcprshim/inc/shimcpr.h
branchRCL_3
changeset 21 abbed5a4b42a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipcprshim/inc/shimcpr.h	Tue Aug 31 16:45:15 2010 +0300
@@ -0,0 +1,174 @@
+/**
+* Copyright (c) 2005-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:
+* This temporary shim layer contanis the interfaces defined by MConnectionNotify, CConnectionProvdBase and CInterface.
+* However only the connection-related part of CInterface appears here, the rest is in CNifManSubConnectionShim.
+* 
+*
+*/
+
+
+
+/**
+ @file SHIMCPR.H
+ @internalComponent
+*/
+
+#if !defined(__SS_SHIMCPR_H__)
+#define __SS_SHIMCPR_H__
+
+#include <ss_connprov.h>		// for CConnectionProviderFactoryBase
+#include <cflog.h>
+#include <es_prot.h>			// for MConnectionNotify and CConnectionProvdBase
+#include <comms-infras/ss_log.h>				// for KESockConnectionTag
+
+#define KShimCprTag KESockConnectionTag
+_LIT8(KShimCprSubTag, "shimcpr");	// logging tag
+
+
+class CConnectionProvdBase;
+class CNifManSubConnectionShim;
+class CConnectionProviderFactoryShim;
+class CConnectionSettingsShim;
+class CConnection;
+class MProviderSelector;
+class CSubConnectionLinkShimClient;
+class CConnectionSelectorShim;
+NONSHARABLE_CLASS(CConnectionProviderShim) : public CConnectionProviderBase, MConnectionNotify
+	{
+  	friend class CConnectionProviderFactoryShim;
+  	friend class CConnectionSelectorShim; //to get/set the aggregarted CConnectionProvdBase
+
+
+public:
+	CConnectionProvdBase& Provider()
+		{
+		ASSERT(iProvider);
+		return *iProvider;
+		}
+	CSubConnectionLinkShimClient* QuerySubSessions(TInt32 aTypeId, const CConnection* aConnection);
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// The public function which will set the pointer to the factiory
+	void SetFactoryIfactory(CConnectionProviderFactoryShim *aFactoryShim);
+#endif // SYMBIAN_NETWORKING_UMTSR5	
+      
+protected:
+	virtual ~CConnectionProviderShim();
+	
+
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	CConnectionProviderShim(CConnectionProviderFactoryBase& aFactory)
+	   : CConnectionProviderBase(aFactory), iSubConnectionType(KInvalidFactoryId)
+	    {
+	    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tCConnectionProviderShim()"),
+			this));
+	    }    
+#else
+	CConnectionProviderShim(CConnectionProviderFactoryBase& aFactory)
+	   : CConnectionProviderBase(aFactory)
+	    {
+	    __CFLOG_VAR((KShimCprTag, KShimCprSubTag, _L8("CConnectionProviderShim %08x:\tCConnectionProviderShim()"),
+			this));
+	    }	
+#endif
+// SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+	    
+    void ConstructL();
+    static CConnectionProviderShim* NewL(CConnectionProviderFactoryBase& aFactory);
+
+	void ConnectionJoiningL( const CConnection& aConnection );
+	void ConnectionLeaving( const CConnection& aConnection );
+	
+	
+	      
+protected:
+	// Define methods from the interface specified by MConnectionNotify
+	virtual void SelectionComplete(TInt aError, const TDesC8& aSelectionInfo);
+	virtual void ConnectionError(TInt aError);
+	virtual void LinkLayerOpen(TInt aError);
+	virtual void LinkLayerClosed(TInt aError);
+	virtual void ProgressNotification(TInt aStage, TInt aError);
+	virtual void ProgressNotification(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
+	virtual void ServiceChangeNotification(TUint32 aId, const TDesC& aType);
+	virtual void InterfaceStateChangeNotification(TDesC8& aInfo);
+	virtual void NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume);
+	virtual void NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume);
+	virtual void SubConnectionEvent(const TSubConnectionEvent& aSubConnectionEvent);
+	
+	virtual TBool ShouldIDeleteNow();
+	
+protected:
+	//CConnectionProviderBase virtuals
+	virtual void DoDataClientJoiningL(MConnectionDataClient& aDataClient);
+	virtual void DoDataClientLeaving(MConnectionDataClient& aDataClient);
+	virtual void DoControlClientJoiningL(MConnectionControlClient& aControlClient);
+	virtual void DoControlClientLeaving(MConnectionControlClient& aControlClient);
+   
+	virtual void DoStartL(Meta::SMetaData& aParams, const RMessagePtr2* aMessage);	
+	virtual TInt DoStop(TInt aError, const RMessagePtr2* aMessage);
+
+	virtual TInt DoCanDoSubConnection(RSubConnection::TSubConnType aSubConnType) const;
+
+	virtual CConnectionProviderBase* DoNextLayer() const ;
+	virtual void DoJoinNextLayerL(CConnectionProviderBase* aNextLayer);
+
+	virtual void DoProgressL(Meta::SMetaData& aBuffer) const;
+	virtual void DoLastProgressError(Meta::SMetaData& aBuffer);
+	virtual void DoRequestServiceChangeNotificationL();
+	virtual void DoCancelServiceChangeNotification();
+	virtual void DoControlL(TUint aOptionLevel, TUint aOptionName, Meta::SMetaData& aOption, const RMessagePtr2* aMessage);
+	virtual TInt DoAllSubConnectionNotificationEnable();
+	virtual TInt DoCancelAllSubConnectionNotification();
+  	virtual void DoSendIoctlMessageL(const RMessage2& aMessage);
+  	virtual void DoSendCancelIoctl();
+	virtual TInt DoEnumerateSubConnectionsL(TUint& aCount);
+	virtual TUint DoEnumerateClientsL(HBufC8*& aClientInfoBuffer, TEnumClients aClientType);
+	virtual void DoConnectionControlActivityL( TControlActivity aControlActivity, const Meta::SMetaData* aData, const RMessagePtr2* aMessage );
+	virtual CConnectionSettings& DoSettingsAccessL();
+
+    CConnectionProvdBase* GetNifSession();
+    void InitialiseL(CConnectionProvdBase* aStarterSession);
+    void SetBlockProgressesL(CConnectionProvdBase* aStarterSession);
+    void AddRefL(CConnectionSelectorShim* aSelector);
+    void ReleaseRef(CConnectionSelectorShim* aSelector);    
+    
+private:
+	CNifManSubConnectionShim* FindSubConnection(TSubConnectionUniqueId aId);
+	void ReleaseRef();
+
+private:
+	CConnectionProvdBase *iProvider; // Enable access to 'old' NIFMAN layer
+	CConnectionSettingsShim* iConnectionSettings;
+	TUint iUsageProfile;
+	RPointerArray<const CConnection> iConnections;
+	// TInt iRefCount; //to keep a connection up while selection is going on
+	RPointerArray<CNifManSubConnectionShim> iNifManSubConnections;
+#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+    TInt iSubConnectionType;
+#endif // SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+	RPointerArray<CConnectionSelectorShim> iSelectors;
+	TBool iHasAnyControlClientJoined:1;
+	TBool iIsAlreadyUninitialised:1;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+	// The handle to the factory object that creates the CConnectionProviderShim
+	CConnectionProviderFactoryShim *iFactoryShim;
+#endif // #ifdef SYMBIAN_NETWORKING_UMTSR5
+
+
+};
+
+#endif
+// __SS_SHIMCPR_H__