--- /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 <elements/mm_states.h>
+#include <ss_internal_activities.h>
+
+#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<CActivityCancelTest&>(*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<const Messages::TSignatureBase*>(iStoredRequest.Ptr());
+ }
+
+
+private:
+ TBuf8<__Align8(Messages::TSignalBase::KMaxInlineMessageSize + Messages::TSignalBase::KMaxUnstoredOverhead)> iStoredRequest;
+ TInt iMaxLoopCount;
+ TInt iCurrentLoopCount;
+
+public:
+ typedef MeshMachine::TContext TContext;
+
+ template<typename TMESSAGE>
+ class TAwaitingMessageState : public MeshMachine::TState<TContext>
+ {
+ public:
+ NETSM_TPL_DECLARE_CTR(TAwaitingMessageState, NetStateMachine::MState, TContext)
+
+ explicit TAwaitingMessageState(TContext& aContext) :
+ MeshMachine::TState<TContext>(aContext) {}
+
+ virtual TBool Accept()
+ {
+ #ifdef __GCCXML__
+ return EFalse;
+ #else
+ if (Messages::address_cast<const Messages::TNodeCtxId>(iContext.iSender).NodeCtx() != CActivityCancelTest::ECancelTestActivity)
+ {
+ Messages::TNodeSignal& msg = this->iContext.iMessage; //Arm compiler is getting confused otherwise
+ return msg.IsMessage<TMESSAGE>();
+ }
+ #endif
+ return EFalse;
+ }
+ };
+
+ DECLARE_SMELEMENT_HEADER( TNoTagForwardOrActiveTagBackward, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
+ virtual TInt TransitionTag();
+ DECLARE_SMELEMENT_FOOTER( TNoTagForwardOrActiveTagBackward )
+
+ DECLARE_SMELEMENT_HEADER( TBeginTest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+ virtual void DoL();
+ DECLARE_SMELEMENT_FOOTER( TBeginTest )
+
+ DECLARE_SMELEMENT_HEADER( TBeginLoop, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+ virtual void DoL();
+ DECLARE_SMELEMENT_FOOTER( TBeginLoop )
+
+ DECLARE_SMELEMENT_HEADER( TCancel, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+ virtual void DoL();
+ DECLARE_SMELEMENT_FOOTER( TCancel )
+
+ DECLARE_SMELEMENT_HEADER( TEndTest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+ virtual void DoL();
+ DECLARE_SMELEMENT_FOOTER( TEndTest )
+
+ DECLARE_SERIALIZABLE_TRANSITION(
+ TProgressiveCancel,
+ TProgressiveMutex,
+ TCancel
+ )
+ };
+
+
+#endif //SYMBIAN_ACTIVITYTEST
+
+