diff -r 000000000000 -r f5a58ecadc66 servicediscoveryandcontrol/pnp/test/upnp/Server/ControlPoint/inc/upnpctrlscpractivities.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servicediscoveryandcontrol/pnp/test/upnp/Server/ControlPoint/inc/upnpctrlscpractivities.h Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,329 @@ +// Copyright (c) 2008-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 +// @internalComponent +// +// + +#ifndef __UPNPCONTROLSCPRACTIVITIES_H +#define __UPNPCONTROLSCPRACTIVITIES_H + +#include +#include +#include +#include + +#include "upnpctrlscpr.h" +#include "upnp_cf_msgs.h" + + +using namespace ESock; +using namespace MeshMachine; + +namespace UPnPControlSCprActivities + { + DECLARE_ACTIVITY_MAP ( activityMap ) + } + +class CUPnPActivityBase : public CNodeParallelActivityBase + { +protected: + CUPnPActivityBase ( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivitiesCount ) + :CNodeParallelActivityBase ( aActivitySig, aNode, aActivitiesCount ) + { } + + ~CUPnPActivityBase ( ); + virtual TBool Next ( TNodeContextBase& aContext ); + + public: + TNodeId iFlowId; + CUPnPRequestParamSetBase* iRequestParamSet; + + public: + typedef TNodeContext TContext; + + //States + DECLARE_SMELEMENT_HEADER ( TStopCurrentActivities, TStateTransition, NetStateMachine::MStateTransition, CUPnPActivityBase::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TStopCurrentActivities) + + //TState Forks + DECLARE_SMELEMENT_HEADER ( TStopActivityOrStopDataClient, TStateFork, NetStateMachine::MStateFork, CUPnPActivityBase::TContext ) + virtual TInt TransitionTag ( ); + DECLARE_SMELEMENT_FOOTER ( TStopActivityOrStopDataClient ) + + //Transitions + DECLARE_SMELEMENT_HEADER ( TAwaitingResponseToStopActivities, TState, NetStateMachine::MState, CUPnPActivityBase::TContext ) + virtual TBool Accept ( ); + DECLARE_SMELEMENT_FOOTER ( TAwaitingResponseToStopActivities ) + + DECLARE_AGGREGATED_TRANSITION2( + TProcessClientLeave, + TRemoveClient, + CoreNetStates::TSendLeaveCompleteIfRequest + ) + }; +//---------------------------------------Control Point Search Request Activity------------------------------------- +class CUPnPSearchActivity: public CUPnPActivityBase + { +public: + static CNodeActivityBase* NewL ( const TNodeActivity& aActivitySig, AMMNodeBase& aNode ); + ~CUPnPSearchActivity ( ); + +private: + CUPnPSearchActivity ( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivitiesCount ) + :CUPnPActivityBase ( aActivitySig, aNode, aActivitiesCount ) + { + } + +public: + typedef TNodeContext TContext; + + //States + typedef TAwaitingMessageState TAwaitingSearchRequest; + + DECLARE_SMELEMENT_HEADER ( TAwaitingReceiveSearchResponse, TState, NetStateMachine::MState, CUPnPSearchActivity::TContext ) + virtual TBool Accept ( ); + DECLARE_SMELEMENT_FOOTER ( TAwaitingReceiveSearchResponse ) + + typedef TAwaiting2MessagesState TAwaitingDataClientStopResponse; + + //Transitions + DECLARE_SMELEMENT_HEADER ( TSendSearchRequest, TStateTransition, NetStateMachine::MStateTransition, CUPnPSearchActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TSendSearchRequest ) + + DECLARE_SMELEMENT_HEADER ( TProcessResponse, TStateTransition, NetStateMachine::MStateTransition, CUPnPSearchActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TProcessResponse ) + + DECLARE_SMELEMENT_HEADER ( TCleanupActivity, TStateTransition, NetStateMachine::MStateTransition, CUPnPSearchActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TCleanupActivity) + + DECLARE_SMELEMENT_HEADER ( TCancelSearchRequest, TStateTransition, NetStateMachine::MStateTransition, CUPnPSearchActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TCancelSearchRequest ) + }; + +//---------------------------------------Control Point Register Notify Request Activity------------------------------------- +class CUPnPRegisterNotifyActivity: public CUPnPActivityBase + { +public: + static CNodeActivityBase* NewL ( const TNodeActivity& aActivitySig, AMMNodeBase& aNode ); + ~CUPnPRegisterNotifyActivity ( ); + +private: + CUPnPRegisterNotifyActivity ( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivitiesCount ) + :CUPnPActivityBase ( aActivitySig, aNode, aActivitiesCount ) + { + } + +public: + typedef TNodeContext TContext; + + //States + typedef TAwaitingMessageState TAwaitingRegisterNotifyRequest; + + DECLARE_SMELEMENT_HEADER ( TAwaitingReceiveNotifivation, TState, NetStateMachine::MState, CUPnPRegisterNotifyActivity::TContext ) + virtual TBool Accept ( ); + DECLARE_SMELEMENT_FOOTER ( TAwaitingReceiveNotifivation ) + + typedef TAwaitingMessageState TAwaitingServerStarted; + typedef TAwaiting2MessagesState TAwaitingDataClientStopResponse; + + //Transitions + DECLARE_SMELEMENT_HEADER ( TStartServer, TStateTransition, NetStateMachine::MStateTransition, CUPnPRegisterNotifyActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TStartServer ) + + DECLARE_SMELEMENT_HEADER ( TSendRegisterRequest, TStateTransition, NetStateMachine::MStateTransition, CUPnPRegisterNotifyActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TSendRegisterRequest ) + + DECLARE_SMELEMENT_HEADER ( TProcessNotification, TStateTransition, NetStateMachine::MStateTransition, CUPnPRegisterNotifyActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TProcessNotification ) + + DECLARE_SMELEMENT_HEADER ( TCancelRegisterRequest, TStateTransition, NetStateMachine::MStateTransition, CUPnPRegisterNotifyActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TCancelRegisterRequest ) + + DECLARE_SMELEMENT_HEADER ( TCleanupActivity, TStateTransition, NetStateMachine::MStateTransition, CUPnPRegisterNotifyActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TCleanupActivity ) + }; + +//---------------------------------------Control Point Describe Request Activity------------------------------------- +class CUpnpDescribeActivity: public CUPnPActivityBase + { +public: + static CNodeActivityBase* NewL( const TNodeActivity& aActivitySig, AMMNodeBase& aNode ); + ~CUpnpDescribeActivity(); + +private: + CUpnpDescribeActivity( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivityCount ) + :CUPnPActivityBase ( aActivitySig, aNode, aActivityCount ) + { } + +public: + typedef TNodeContext TContext; + + // States + typedef TAwaitingMessageState TAwaitingDescribeRequest; + + DECLARE_SMELEMENT_HEADER( TAwaitingErrorOrResponseOrCancel, TState, NetStateMachine::MState, CUpnpDescribeActivity::TContext ) + TBool Accept(); + DECLARE_SMELEMENT_FOOTER ( TAwaitingErrorOrResponseOrCancel ) + + DECLARE_SMELEMENT_HEADER ( TAwaitingDataClientStopResponse, TState, NetStateMachine::MState, CUPnPRegisterNotifyActivity::TContext ) + virtual TBool Accept ( ); + DECLARE_SMELEMENT_FOOTER ( TAwaitingDataClientStopResponse ) + + // Transitions + DECLARE_SMELEMENT_HEADER ( TSendDescribeRequest, TStateTransition, NetStateMachine::MStateTransition, CUpnpDescribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TSendDescribeRequest ) + + DECLARE_SMELEMENT_HEADER ( TProcessResponse, TStateTransition, NetStateMachine::MStateTransition, CUpnpDescribeActivity::TContext ) + void DoL(); + void Error( TInt aError ); + DECLARE_SMELEMENT_FOOTER ( TProcessResponse ) + + DECLARE_SMELEMENT_HEADER ( TReportError, TStateTransition, NetStateMachine::MStateTransition, CUpnpDescribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TReportError ) + + DECLARE_SMELEMENT_HEADER ( TCleanupActivity, TStateTransition, NetStateMachine::MStateTransition, CUpnpDescribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TCleanupActivity ) + + DECLARE_SMELEMENT_HEADER ( TDataClientStop, TStateTransition, NetStateMachine::MStateTransition, CUpnpDescribeActivity::TContext ) + virtual void DoL ( ); + DECLARE_SMELEMENT_FOOTER ( TDataClientStop) + }; + + +//---------------------------------------Control Point Subscribe Request Activity------------------------------------- +class CUpnpSubscribeActivity: public CUPnPActivityBase + { +public: + static CNodeActivityBase* NewL( const TNodeActivity& aActivitySig, AMMNodeBase& aNode ); + ~CUpnpSubscribeActivity(); + +private: + CUpnpSubscribeActivity( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivityCount ) + :CUPnPActivityBase ( aActivitySig, aNode, aActivityCount ) + { } + +public : + CSubscriptionInfo* iSubscriptionInfo; // Not owned + +public: // States + typedef TNodeContext TContext; + + typedef TAwaitingMessageState TAwaitingSubscribeRequest; + + DECLARE_SMELEMENT_HEADER ( TAwaitingErrorOrResponseOrCancel, TState, NetStateMachine::MState, CUpnpSubscribeActivity::TContext ) + TBool Accept(); + DECLARE_SMELEMENT_FOOTER ( TAwaitingErrorOrResponseOrCancel ) + +public: // Transitions + DECLARE_SMELEMENT_HEADER ( TSendSubscribeRequest, TStateTransition, NetStateMachine::MStateTransition, CUpnpSubscribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TSendSubscribeRequest ) + + DECLARE_SMELEMENT_HEADER ( TProcessSubscribeResponse, TStateTransition, NetStateMachine::MStateTransition, CUpnpSubscribeActivity::TContext ) + void DoL(); + void Error( TInt aError ); + DECLARE_SMELEMENT_FOOTER ( ProcessSubscribeResponse ) + + DECLARE_SMELEMENT_HEADER ( TReportError, TStateTransition, NetStateMachine::MStateTransition, CUpnpSubscribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TReportError ) + + DECLARE_SMELEMENT_HEADER ( TSendUnsubscribeRequest, TStateTransition, NetStateMachine::MStateTransition, CUpnpSubscribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TSendUnsubscribeRequest ) + + DECLARE_SMELEMENT_HEADER ( TProcessUnsubscribeResponse, TStateTransition, NetStateMachine::MStateTransition, CUpnpSubscribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER ( TProcessUnsubscribeResponse ) + }; + +class CUpnpUnSubscribeActivity: public CUPnPActivityBase + { +public: + static CNodeActivityBase* NewL( const TNodeActivity& aActivitySig, AMMNodeBase& aNode ); + ~CUpnpUnSubscribeActivity(); + +private: + CUpnpUnSubscribeActivity( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivityCount ) + :CUPnPActivityBase ( aActivitySig, aNode, aActivityCount ) + { } + +private: + CSubscriptionInfo* iSubscriptionInfo; // Not Owned + +public: + typedef TNodeContext TContext; + + // States + DECLARE_SMELEMENT_HEADER ( TAwaitingUnSubscribeRequest, TState, NetStateMachine::MState, CUpnpUnSubscribeActivity::TContext ) + TBool Accept(); + DECLARE_SMELEMENT_FOOTER( TAwaitingUnSubscribeRequest ) + + typedef TAwaiting2MessagesState TAwaitingErrorOrResponse; + +public: // Transitions + DECLARE_SMELEMENT_HEADER ( TSendUnSubscribeRequest, TStateTransition, NetStateMachine::MStateTransition, CUpnpUnSubscribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TSendUnSubscribeRequest ) + + DECLARE_SMELEMENT_HEADER ( TProcessResponse, TStateTransition, NetStateMachine::MStateTransition, CUpnpUnSubscribeActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER ( TProcessResponse ) + }; + + +class CUpnpNotificationActivity: public CNodeParallelActivityBase + { +public: + static CNodeActivityBase* NewL( const TNodeActivity& aActivitySig, AMMNodeBase& aNode ); + ~CUpnpNotificationActivity(); + +private: + CUpnpNotificationActivity( const TNodeActivity& aActivitySig, AMMNodeBase& aNode, TUint aActivityCount ); + +private: + RBuf8 iBodyBuf; + TPtrC8 iPublisherUrl; + CTransaction* iTransaction; + TInt iResponseStatus; + +private: // Context + typedef TNodeContext TContext; + +public: + // Transitions + DECLARE_SMELEMENT_HEADER ( TProcessNotifyRequest, TStateTransition, NetStateMachine::MStateTransition, CUpnpNotificationActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TProcessNotifyRequest ) + + DECLARE_SMELEMENT_HEADER ( TSendResponse, TStateTransition, NetStateMachine::MStateTransition, CUpnpNotificationActivity::TContext ) + void DoL(); + DECLARE_SMELEMENT_FOOTER( TSendResponse ) + }; + +#endif // UPNPCONTROLSCPRACTIVITIES_H