diff -r 98a7181d2ce7 -r 8b5d60ce1e94 datacommsserver/esockserver/inc/ss_flowrequeststates.h --- a/datacommsserver/esockserver/inc/ss_flowrequeststates.h Fri Mar 12 15:49:41 2010 +0200 +++ b/datacommsserver/esockserver/inc/ss_flowrequeststates.h Mon Mar 15 12:45:15 2010 +0200 @@ -24,6 +24,7 @@ #include #include +#include "ss_nodemessages_dataclient.h" #include "ss_flowrequest.h" @@ -99,6 +100,9 @@ virtual void DoL(); DECLARE_SMELEMENT_FOOTER( TLeaveSubConnection ) +DECLARE_SMELEMENT_HEADER( TSendClientLeavingAndRemoveControlProvider, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) + virtual void DoL(); +DECLARE_SMELEMENT_FOOTER( TSendClientLeavingAndRemoveControlProvider ) // @@ -146,6 +150,13 @@ virtual ~CFlowRequestActivity() { + if( !iBindToSender.IsNull() ) + { + TInt err = Error() ? Error() : KErrAbort; + Messages::RNodeInterface::OpenPostMessageClose(Messages::TNodeCtxId(ActivityId(), iNode.Id()), + iBindToSender, Messages::TEBase::TError(ESock::TCFDataClient::TBindToComplete::Id(), err).CRef()); + } + static_cast(iNode).iFlowParameters.Close(); __ASSERT_DEBUG(iNode.CountAllActivities()==0, User::Panic(KSpecAssert_ESocksflwrqststs, 1)); #ifndef __GCCXML__ @@ -153,12 +164,27 @@ iNode.Id(), Messages::TEChild::TDestroy().CRef()); #endif } + +public: + /* A node that has sent TCFDataClient::TBindTo. The response TCFDataClient::TBindToComplete + * must be sent to this node. + */ + Messages::TNodeCtxId iBindToSender; public: typedef MeshMachine::TNodeContext TContext; + +DECLARE_SMELEMENT_HEADER( TAwaitingBindTo, MeshMachine::TState, NetStateMachine::MState, TContext ) + virtual TBool Accept(); +DECLARE_SMELEMENT_FOOTER( TAwaitingBindTo ) + DECLARE_SMELEMENT_HEADER( TStoreFlowParams, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) virtual void DoL(); DECLARE_SMELEMENT_FOOTER( TStoreFlowParams ) + +DECLARE_SMELEMENT_HEADER( TSendBindToComplete, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) + virtual void DoL(); +DECLARE_SMELEMENT_FOOTER( TSendBindToComplete ) }; class CFlowRequestDestroyActivity : public MeshMachine::CNodeActivityBase, protected MeshMachine::APreallocatedOriginators<1>