diff -r 39bb7c3571e9 -r 052078dda061 networkcontrol/ipcprshim/inc/shimcpr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/ipcprshim/inc/shimcpr.h Tue Jun 29 19:20:22 2010 +0530 @@ -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 // for CConnectionProviderFactoryBase +#include +#include // for MConnectionNotify and CConnectionProvdBase +#include // 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 iConnections; + // TInt iRefCount; //to keep a connection up while selection is going on + RPointerArray iNifManSubConnections; +#ifdef SYMBIAN_NETWORKING_3GPPDEFAULTQOS + TInt iSubConnectionType; +#endif // SYMBIAN_NETWORKING_3GPPDEFAULTQOS + RPointerArray 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__