datacommsserver/esockserver/test/providers/dummy/inc/activityTest.h
author hgs
Fri, 14 May 2010 14:12:43 +0100
changeset 30 df67dc5d759e
permissions -rw-r--r--
201019_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     1
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     2
// All rights reserved.
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     7
//
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     8
// Initial Contributors:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    10
//
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    11
// Contributors:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    12
//
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    13
// Description:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    14
//
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    15
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    16
/**
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    17
 @file
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    18
 @internalTechnology
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    19
*/
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    20
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    21
#include <elements/mm_states.h>
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    22
#include <ss_internal_activities.h>
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    23
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    24
#ifndef SYMBIAN_ACTIVITYTEST
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    25
#define SYMBIAN_ACTIVITYTEST
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    26
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    27
namespace CancelTestBindToActivity
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    28
    {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    29
    DECLARE_NODEACTIVITY(CancelBindTo)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    30
    }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    31
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    32
class CActivityCancelTest : public MeshMachine::CNodeRetryActivity
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    33
                                      
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    34
/**
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    35
@internalTechnology
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    36
*/
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    37
    {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    38
public:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    39
    //TODO
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    40
    enum {ECancelTestActivity = ESock::ECFActivityBuildStack };
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    41
    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    42
        {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    43
        CActivityCancelTest* self = new (ELeave) CActivityCancelTest(aActivitySig, aNode);
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    44
        return self;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    45
        }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    46
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    47
    class TProgressiveMutex
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    48
        {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    49
        public:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    50
        static TBool IsBlocked(MeshMachine::TNodeContextBase& aContext)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    51
            {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    52
            return static_cast<CActivityCancelTest&>(*aContext.iNodeActivity).ProgressiveMutex();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    53
            }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    54
        };
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    55
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    56
    void NextLoop()
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    57
        {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    58
        iMaxLoopCount++;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    59
        iCurrentLoopCount = 0;        
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    60
        }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    61
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    62
    TBool ProgressiveMutex()
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    63
        {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    64
        return ++iCurrentLoopCount <= iMaxLoopCount;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    65
        }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    66
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    67
protected:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    68
    CActivityCancelTest(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    69
    :   CNodeRetryActivity(aActivitySig, aNode)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    70
        {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    71
        }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    72
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    73
    void StoreRequestL(const Messages::TSignatureBase& aRequest);
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    74
    const Messages::TSignatureBase& StoredRequest()
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    75
        { 
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    76
        return *reinterpret_cast<const Messages::TSignatureBase*>(iStoredRequest.Ptr()); 
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    77
        }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    78
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    79
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    80
private:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    81
    TBuf8<__Align8(Messages::TSignalBase::KMaxInlineMessageSize + Messages::TSignalBase::KMaxUnstoredOverhead)> iStoredRequest;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    82
    TInt iMaxLoopCount;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    83
    TInt iCurrentLoopCount;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    84
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    85
public:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    86
    typedef MeshMachine::TContext TContext;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    87
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    88
    template<typename TMESSAGE>
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    89
    class TAwaitingMessageState : public MeshMachine::TState<TContext>
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    90
        {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    91
    public:
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    92
        NETSM_TPL_DECLARE_CTR(TAwaitingMessageState, NetStateMachine::MState, TContext)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    93
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    94
        explicit TAwaitingMessageState(TContext& aContext) :
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    95
            MeshMachine::TState<TContext>(aContext) {}
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    96
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    97
        virtual TBool Accept()
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    98
                {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
    99
    #ifdef __GCCXML__
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   100
                return EFalse;
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   101
    #else
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   102
                if (Messages::address_cast<const Messages::TNodeCtxId>(iContext.iSender).NodeCtx() != CActivityCancelTest::ECancelTestActivity)
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   103
                    {
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   104
                    Messages::TNodeSignal& msg = this->iContext.iMessage; //Arm compiler is getting confused otherwise
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   105
                    return msg.IsMessage<TMESSAGE>();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   106
                    }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   107
    #endif
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   108
                return EFalse;                
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   109
                }
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   110
        };  
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   111
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   112
    DECLARE_SMELEMENT_HEADER( TNoTagForwardOrActiveTagBackward, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   113
        virtual TInt TransitionTag();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   114
    DECLARE_SMELEMENT_FOOTER( TNoTagForwardOrActiveTagBackward )    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   115
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   116
    DECLARE_SMELEMENT_HEADER( TBeginTest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   117
        virtual void DoL();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   118
    DECLARE_SMELEMENT_FOOTER( TBeginTest )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   119
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   120
    DECLARE_SMELEMENT_HEADER( TBeginLoop, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   121
        virtual void DoL();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   122
    DECLARE_SMELEMENT_FOOTER( TBeginLoop )    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   123
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   124
    DECLARE_SMELEMENT_HEADER( TCancel, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   125
        virtual void DoL();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   126
    DECLARE_SMELEMENT_FOOTER( TCancel )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   127
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   128
    DECLARE_SMELEMENT_HEADER( TEndTest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   129
        virtual void DoL();
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   130
    DECLARE_SMELEMENT_FOOTER( TEndTest )
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   131
    
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   132
    DECLARE_SERIALIZABLE_TRANSITION(
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   133
        TProgressiveCancel,
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   134
        TProgressiveMutex,
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   135
        TCancel
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   136
        )      
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   137
    };
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   138
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   139
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   140
#endif //SYMBIAN_ACTIVITYTEST
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   141
df67dc5d759e 201019_01
hgs
parents:
diff changeset
   142