diff -r 51722b10598b -r 9ddb1d67ebaf datacommsserver/esockserver/test/providers/dummy/inc/activitytest.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/test/providers/dummy/inc/activitytest.h Tue May 11 17:20:19 2010 +0300 @@ -0,0 +1,142 @@ +// 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: +// + +/** + @file + @internalTechnology +*/ + +#include +#include + +#ifndef SYMBIAN_ACTIVITYTEST +#define SYMBIAN_ACTIVITYTEST + +namespace CancelTestBindToActivity + { + DECLARE_NODEACTIVITY(CancelBindTo) + } + +class CActivityCancelTest : public MeshMachine::CNodeRetryActivity + +/** +@internalTechnology +*/ + { +public: + //TODO + enum {ECancelTestActivity = ESock::ECFActivityBuildStack }; + static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) + { + CActivityCancelTest* self = new (ELeave) CActivityCancelTest(aActivitySig, aNode); + return self; + } + + class TProgressiveMutex + { + public: + static TBool IsBlocked(MeshMachine::TNodeContextBase& aContext) + { + return static_cast(*aContext.iNodeActivity).ProgressiveMutex(); + } + }; + + void NextLoop() + { + iMaxLoopCount++; + iCurrentLoopCount = 0; + } + + TBool ProgressiveMutex() + { + return ++iCurrentLoopCount <= iMaxLoopCount; + } + +protected: + CActivityCancelTest(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode) + : CNodeRetryActivity(aActivitySig, aNode) + { + } + + void StoreRequestL(const Messages::TSignatureBase& aRequest); + const Messages::TSignatureBase& StoredRequest() + { + return *reinterpret_cast(iStoredRequest.Ptr()); + } + + +private: + TBuf8<__Align8(Messages::TSignalBase::KMaxInlineMessageSize + Messages::TSignalBase::KMaxUnstoredOverhead)> iStoredRequest; + TInt iMaxLoopCount; + TInt iCurrentLoopCount; + +public: + typedef MeshMachine::TContext TContext; + + template + class TAwaitingMessageState : public MeshMachine::TState + { + public: + NETSM_TPL_DECLARE_CTR(TAwaitingMessageState, NetStateMachine::MState, TContext) + + explicit TAwaitingMessageState(TContext& aContext) : + MeshMachine::TState(aContext) {} + + virtual TBool Accept() + { + #ifdef __GCCXML__ + return EFalse; + #else + if (Messages::address_cast(iContext.iSender).NodeCtx() != CActivityCancelTest::ECancelTestActivity) + { + Messages::TNodeSignal& msg = this->iContext.iMessage; //Arm compiler is getting confused otherwise + return msg.IsMessage(); + } + #endif + return EFalse; + } + }; + + DECLARE_SMELEMENT_HEADER( TNoTagForwardOrActiveTagBackward, MeshMachine::TStateFork, NetStateMachine::MStateFork, TContext ) + virtual TInt TransitionTag(); + DECLARE_SMELEMENT_FOOTER( TNoTagForwardOrActiveTagBackward ) + + DECLARE_SMELEMENT_HEADER( TBeginTest, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) + virtual void DoL(); + DECLARE_SMELEMENT_FOOTER( TBeginTest ) + + DECLARE_SMELEMENT_HEADER( TBeginLoop, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) + virtual void DoL(); + DECLARE_SMELEMENT_FOOTER( TBeginLoop ) + + DECLARE_SMELEMENT_HEADER( TCancel, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) + virtual void DoL(); + DECLARE_SMELEMENT_FOOTER( TCancel ) + + DECLARE_SMELEMENT_HEADER( TEndTest, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext ) + virtual void DoL(); + DECLARE_SMELEMENT_FOOTER( TEndTest ) + + DECLARE_SERIALIZABLE_TRANSITION( + TProgressiveCancel, + TProgressiveMutex, + TCancel + ) + }; + + +#endif //SYMBIAN_ACTIVITYTEST + +