--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/iptransportlayer/inc/ipdeftbasescpr.h Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,219 @@
+// Copyright (c) 2006-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:
+// IP Default SubConnection Provider class definition.
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef SYMBIAN_IPDEFTBASESCPR_H
+#define SYMBIAN_IPDEFTBASESCPR_H
+
+#include <comms-infras/ss_subconnprov.h>
+#include <comms-infras/corescpr.h>
+#include <comms-infras/corescprstates.h>
+#include <comms-infras/ss_nodeinterfaces.h>
+#include <comms-infras/ss_corepractivities.h>
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+#include <tcprecvwin.h>
+#endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
+namespace IPBaseSCprStates
+ {
+ class TStoreAddressUpdate;
+ class TRejoinDataClient;
+ }
+
+class CIpDefaultSubConnectionProviderFactory;
+class CIpSubConnectionProviderFactory;
+
+class RIPDataClientNodeInterface : public Messages::RNodeInterface
+/** IP SCPR override for RNodeInterface data client.
+Caches IP address updates reported by the data clients.
+
+@internalTechnology
+@released Since 9.4 */
+ {
+ public:
+ TSockAddr iCliSrcAddr;
+ TSockAddr iCliDstAddr;
+ TInt iProtocolId;
+ TInt iActivityAwaitingResponse;
+ TUid iAppSid;
+
+ RIPDataClientNodeInterface()
+ :Messages::RNodeInterface(),
+ iActivityAwaitingResponse(MeshMachine::KActivityNull)
+ {}
+ };
+
+NONSHARABLE_CLASS(CIpSubConnectionProviderBase) : public CCoreSubConnectionProvider
+/** IP subconnection provider base class
+
+@internalTechnology
+@released Since 9.4 */
+ {
+ friend class IPBaseSCprStates::TStoreAddressUpdate;
+ friend class IPBaseSCprStates::TRejoinDataClient;
+public:
+ static const TUint32 KInvalidIapId = 0xFFFFFFFF;
+
+protected:
+ virtual Messages::RNodeInterface* NewClientInterfaceL(const Messages::TClientType& aClientType, TAny* aClientInfo = NULL);
+ CIpSubConnectionProviderBase(ESock::CSubConnectionProviderFactoryBase& aFactory,
+ const MeshMachine::TNodeActivityMap& aActivityMap);
+
+protected:
+ TUint32 iIapId;
+ };
+
+NONSHARABLE_CLASS(CIpDefaultBaseSubConnectionProvider) : public CIpSubConnectionProviderBase
+/** Default IP subconnection provider
+
+@internalTechnology
+@released Since 9.4 */
+ {
+ friend class CIpDefaultSubConnectionProviderFactory;
+
+public:
+ typedef CIpSubConnectionProviderFactory FactoryType;
+ TBool ImsFlag();
+
+protected:
+ CIpDefaultBaseSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory,
+ const MeshMachine::TNodeActivityMap& aActivityMap);
+ static CIpDefaultBaseSubConnectionProvider* NewL(ESock::CSubConnectionProviderFactoryBase& aFactory);
+
+ virtual ~CIpDefaultBaseSubConnectionProvider();
+ virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+ };
+
+//-=========================================================
+//
+// Activities
+//
+//-=========================================================
+namespace IPDeftSCprBaseActivities
+ {
+ enum TIPDeftSCprBaseActivities
+ {
+ ECFActivityAddressUpdate = ESock::ECFActivityCustom,
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+ ECFActivityCPFCreate = ESock::ECFActivityCustom + 1,
+ ECFActivityReceiveWin = ESock::ECFActivityCustom+2
+#else
+ ECFActivityCPFCreate = ESock::ECFActivityCustom + 1
+#endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
+ };
+
+ DECLARE_ACTIVITY_MAP(ipscprbaseActivityMap)
+ }
+
+namespace IPDeftBaseSCprActivities
+ {
+ enum TIPDeftBaseSCprActivities
+ {
+ ECFActivityAddressUpdate = ESock::ECFActivityCustom,
+ };
+
+ DECLARE_ACTIVITY_MAP(ipdeftbasescprActivityMap)
+ }
+
+
+//-=========================================================
+//
+// States
+//
+//-=========================================================
+namespace IPBaseSCprStates
+{
+typedef MeshMachine::TNodeContext<CIpSubConnectionProviderBase, SCprStates::TContext> TContext;
+
+DECLARE_SMELEMENT_HEADER( TAwaitingAddressUpdate, MeshMachine::TState<TContext>, NetStateMachine::MState, IPBaseSCprStates::TContext )
+ virtual TBool Accept();
+DECLARE_SMELEMENT_FOOTER( TAwaitingAddressUpdate )
+
+DECLARE_SMELEMENT_HEADER( TStoreAddressUpdate, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, IPBaseSCprStates::TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TStoreAddressUpdate )
+
+DECLARE_SMELEMENT_HEADER( TRejoinDataClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, IPBaseSCprStates::TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TRejoinDataClient )
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+//State transition to store bearer type in provisionconfig and send window size to data clients in custom message
+DECLARE_SMELEMENT_HEADER( TSendTransportNotificationToDataClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, IPBaseSCprStates::TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TSendTransportNotificationToDataClients )
+
+//State to accept TTransportNotification from IPCPR.
+DECLARE_SMELEMENT_HEADER( TAwaitingTransportNotification, MeshMachine::TState<TContext>, NetStateMachine::MState, IPBaseSCprStates::TContext )
+ virtual TBool Accept();
+DECLARE_SMELEMENT_FOOTER( TAwaitingTransportNotification )
+#endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
+}
+
+namespace IPDeftBaseSCprBinderRequestActivity
+{
+const TInt KPermissionDenied = 1;
+
+typedef MeshMachine::TNodeContext<CIpDefaultBaseSubConnectionProvider, SCprStates::TContext> TContext;
+
+DECLARE_SMELEMENT_HEADER( TNoTagOrUseExistingOrPermissionDenied, PRActivities::CCommsBinderActivity::TNoTagOrUseExisting, NetStateMachine::MStateFork, TContext )
+ virtual TInt TransitionTag();
+DECLARE_SMELEMENT_FOOTER( TNoTagOrUseExistingOrPermissionDenied )
+}
+
+namespace IPDeftBaseSCprDataClientStartActivity
+{
+typedef MeshMachine::TNodeContext<CIpDefaultBaseSubConnectionProvider, SCprStates::TContext> TContext;
+
+DECLARE_SMELEMENT_HEADER( TGetParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TGetParams )
+}
+
+namespace IPDeftSCprStopActivity
+{
+typedef IPBaseSCprStates::TContext TContext;
+
+DECLARE_SMELEMENT_HEADER( TStopYourFlows, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+ virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TStopYourFlows )
+
+DECLARE_SMELEMENT_HEADER( TNoTagBackwardsOrProviderStopped, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
+ virtual TInt TransitionTag();
+DECLARE_SMELEMENT_FOOTER( TNoTagBackwardsOrProviderStopped )
+
+DECLARE_SMELEMENT_HEADER( TNoTagOrProviderStopped, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
+ virtual TInt TransitionTag();
+DECLARE_SMELEMENT_FOOTER( TNoTagOrProviderStopped )
+
+
+
+DECLARE_SERIALIZABLE_STATE(
+ TNoTagOrProviderStoppedBlockedByStart,
+ CoreNetStates::TActivityStartMutex,
+ IPDeftSCprStopActivity::TNoTagOrProviderStopped
+ )
+}
+
+#endif //SYMBIAN_IPDEFTBASESCPR_H