diff -r 00c6709d25aa -r 9d7ce34704c8 baseconnectionproviders/refscpr/inc/ReferenceSCPR_subconnProv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/baseconnectionproviders/refscpr/inc/ReferenceSCPR_subconnProv.h Tue Aug 31 16:25:36 2010 +0300 @@ -0,0 +1,121 @@ +// 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: +// Reference SubConnection Provider class definition. +// +// + +/** + @file + @internalComponent +*/ + +#if !defined(__REFERENCESCPR_SUBCONNPROV_H__) +#define __REFERENCESCPR_SUBCONNPROV_H__ + + +#include +#include + + +#ifdef __FLOG_ACTIVE +// CommsDebugUtility logging tags. Use them to enable tracing for ReferenceSCPR +_LIT8(KReferenceLogTag1,"SubConnProvd"); +_LIT8(KReferenceLogTag2,"Reference"); +#endif + + + +class CReferenceSubConnectionProvider : public CSubConnectionProviderBase, public MConnectionDataClient +/** +CReferenceSubConnectionProvider is a reference implementation for a reserved subconnection, +that is: a subconnection explicitly requested by a client openning an RSubConnection +in ECreateNew mode. Typically reserved and shared subconnection providers, although represent the +same layer/technology, require different implementations of CSubConnectionProviderBase. +This example code takes that into account and provides two separate classes for reserved and +shared subconnections respectivelly. Should the implementation differ little or not differ at all, +developers are encouraged to introduce inheritance between the two types or implement just one +universal CSubConnectionProviderBase subclass, if sensible. +The following should be read like a class diagram for a CSubConnectionProviderBase: +=================================================================================== + + [MSubConnectionControlClient] +LAYER N-1 ^ + | + [MSubConnectionDataClient]<-n- n [MSubConnectionDataClient]<-n- + | | /\ | +LAYER N 1 1 is a 1 + | | || | + [ServiceAccessPoint]<-n--1-[CSubConnectionProviderBase]-1-----n->[CConnectionProviderBase] + | + n + | + 1 +LAYER N+1 v + [CSubConnectionProviderBase] +==================================================================================== +@internalComponent +@released since v9.2 +*/ + { +public: + + //-========================================================= + // MConnectionDataClient methods + //-========================================================= + virtual void Notify(TNotify aNotifyType, CConnectionProviderBase* aConnProvider, TInt aError, const CConNotificationEvent* aConNotificationEvent); + virtual void AttachToNext(CSubConnectionProviderBase* aSubConnProvider); + virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider); + virtual void ConnectionError(TInt aStage, TInt aError); + + + + //-========================================================= + // CSubConnectionProviderBase methods + //-========================================================= + virtual void DoDataClientJoiningL(MSubConnectionDataClient& aDataClient); + virtual void DoDataClientLeaving(MSubConnectionDataClient& aDataClient); + virtual void DoControlClientJoiningL(MSubConnectionControlClient& aControlClient); + virtual void DoControlClientLeaving(MSubConnectionControlClient& aControlClient); + virtual void DoSourceAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource); + virtual void DoDestinationAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aDestination); + virtual void DoDataClientRouted(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource, const TSockAddr& aDestination, const TDesC8& aConnectionInfo); + virtual void DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle); + virtual TInt DoControl(TUint aOptionLevel, TUint aOptionName, TDes8& aOption); + virtual CConnDataTransfer& DoDataTransferL(); + virtual MConnectionDataClient* DoSelfConnectionDataClient(); + virtual void DoStartL(); + virtual void DoStop(); + virtual CSubConnectionProviderBase* DoNextLayer(); + + +protected: + + //-========================================================= + // Custom methods + //-========================================================= + friend class CReferenceSubConnectionProviderFactory; + + CReferenceSubConnectionProvider(CSubConnectionProviderFactoryBase& aFactory, + CConnectionProviderBase& aConnProvider); + static CReferenceSubConnectionProvider* NewL(CSubConnectionProviderFactoryBase& aFactory, + CConnectionProviderBase& aConnProvider); + void ConstructL(); + virtual ~CReferenceSubConnectionProvider(); + +public: + __FLOG_DECLARATION_MEMBER; + + }; + +#endif // __REFERENCESCPR_SUBCONNPROV_H__ \ No newline at end of file