diff -r bb2423252ea3 -r c1029e558ef5 linklayerprotocols/tundriver/inc/tundriverflow.h --- a/linklayerprotocols/tundriver/inc/tundriverflow.h Wed Sep 15 13:53:10 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -/** -* Copyright (c) 2010 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: -* Header file for the Default SubConnection Flow -* -* -*/ - - - -/** - @file tundriverflow.h - @internalTechnology -*/ - -#ifndef TUNDRIVERFLOW_H -#define TUNDRIVERFLOW_H - -#include -#include -#include -#include -#include "tundriverbinder.h" -#include "tundriverprovision.h" - -/** -Tun Driver SubConnFlow Implementation UID -*/ -const TInt KTunDriverFlowImplementationUid = 0x10281C3C; - -// String literals for protocol name used during flow binding -_LIT8(KProtocol4, "ip"); -#ifdef IPV6SUPPORT -_LIT8(KProtocol6, "ip6"); -#endif - -class CTunDriverSubConnectionFlowFactory : public ESock::CSubConnectionFlowFactoryBase -/** -*/ - { -public: - static CTunDriverSubConnectionFlowFactory* NewL(TAny* aConstructionParameters); - virtual ESock::CSubConnectionFlowBase* DoCreateFlowL(ESock::CProtocolIntfBase* aProtocolIntf, ESock::TFactoryQueryBase& aQuery); -protected: - CTunDriverSubConnectionFlowFactory(TUid aFactoryId, ESock::CSubConnectionFlowFactoryContainer& aParentContainer); - }; - -class CTunDriverBinder4; -#ifdef IPV6SUPPORT -class CTunDriverBinder6; -#endif -class CTunDriverSubConnectionFlow : public ESock::CSubConnectionFlowBase, public ESock::MFlowBinderControl -/** -*/ - { -public: - static CTunDriverSubConnectionFlow* NewL(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf); - - // from Messages::ANode (via CSubConnectionFlowBase) - virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage); - - // Methods called from Binders - void FlowDown(TInt aError, TInt aAction = MNifIfNotify::EDisconnect); - void Progress(TInt aStage, TInt aError); - const TTunDriverIp4Provision* Ip4Provision() const; -#ifdef IPV6SUPPORT - const TTunDriverIp6Provision* Ip6Provision() const; -#endif - - // Functions for dealing with SCPR messages - void StartFlowL(); - void CancelFlow(TInt aError); - void StopFlow(TInt aError); - void Destroy(); - void SubConnectionGoingDown(); - void SubConnectionError(TInt aError); - - // from MFlowBinderControl - virtual ESock::MLowerControl* GetControlL(const TDesC8& aProtocol); - virtual ESock::MLowerDataSender* BindL(const TDesC8& aProtocol, ESock::MUpperDataReceiver* aReceiver, ESock::MUpperControl* aControl); - virtual void Unbind(ESock::MUpperDataReceiver* aReceiver, ESock::MUpperControl* aControl); - virtual ESock::CSubConnectionFlowBase* Flow(); - -protected: - CTunDriverSubConnectionFlow(ESock::CSubConnectionFlowFactoryBase& aFactory, const Messages::TNodeId& aSubConnId, ESock::CProtocolIntfBase* aProtocolIntf); - virtual ~CTunDriverSubConnectionFlow(); - - // CSubConnectionFlowBase - virtual ESock::MFlowBinderControl* DoGetBinderControlL(); - - // Utilities for posting SCPR messages - void PostProgressMessage(TInt aStage, TInt aError); - void PostDataClientStartedMessage(); - void PostFlowDownMessage(TInt aError, TInt aAction = MNifIfNotify::EDisconnect); - void MaybePostDataClientIdle(); - -private: - void ProvisionConfig(const ESock::RMetaExtensionContainerC& aConfigData); - -private: - CTunDriverBinder4* iBinder4; -#ifdef IPV6SUPPORT - CTunDriverBinder6* iBinder6; -#endif - const CTunDriverProtoProvision* iProvision; // cached pointer to provisioning structure in SCPR (in control side memory) - TInt iSavedError; // errors during processing of ProvisionConfig message - enum TMeshMachineFlowState - { - EStopped, - EStarting, - EStarted, - EStopping, - }; - TMeshMachineFlowState iMMState; - __FLOG_DECLARATION_MEMBER; -public: - }; - -#endif // TUNDRIVERFLOW_H