DynamicRemoteState.h
Go to the documentation of this file.
1/*
2* This file is part of ArmarX.
3*
4* Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5*
6* ArmarX is free software; you can redistribute it and/or modify
7* it under the terms of the GNU General Public License version 2 as
8* published by the Free Software Foundation.
9*
10* ArmarX is distributed in the hope that it will be useful, but
11* WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17*
18* @package ArmarX::
19* @author Mirko Waechter ( mirko.waechter at kit dot edu)
20* @date 2012
21* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22* GNU General Public License
23*/
24
25#pragma once
26
27#include "RemoteState.h"
28
29namespace armarx
30{
31 DEFINEEVENT(LoadingFailed)
32
33 /**
34 * \class DynamicRemoteState
35 * \brief DynamicRemoteStates can be used to connect to remote statecharts dynamically at runtime
36 * \ingroup StatechartGrp
37 *
38 * A DynamicRemoteState behaves like its parent class RemoteState with the
39 * exception that the both proxy and statename of the remote statechart are not
40 * known at compile time.
41 * Instead, both parameters are passed to the DynamicRemoteState instance
42 * at runtime via input parameters defined on the event leading to a
43 * transition to this instance.
44 *
45 * To create a DynamicRemoteState instance in a statechart call the
46 * State::addDynamicRemoteState() function in StateBase::defineSubstates().
47 *
48 * At runtime add the following input parameters to the transition event:
49 * \li proxyName (VariantType::String) name of the RemoteStateOfferer instance
50 * \li stateName (VariantType::String) name of the remote state to enter
51 */
52 class DynamicRemoteState : virtual public RemoteState
53 {
54 public:
55 /**
56 * Initialize all instance variables
57 */
59 /**
60 * Create a copy of \p source
61 */
63 /**
64 * Assignment operator which currently is set to fail on any invocation
65 */
67
68 // inherited from Component
69 std::string getDefaultName() const override;
70 void onInitComponent() override;
71 void onConnectComponent() override;
72
73 // inherited from StateBase
74 /**
75 * Does the setup of the remote statechart and calls RemoteState::_baseOnEnter()
76 * afterwards.
77 *
78 * The Event LoadingFailed is emitted if connecting to the remote
79 * statechart failed.
80 *
81 * \see StateBase::_baseOnEnter()
82 */
83 void _baseOnEnter() override;
84 /**
85 * Calls RemoteState::_baseOnBreak() and redefines the input parameters
86 *
87 * \see StateBase::_baseOnBreak()
88 */
89 void _baseOnExit() override;
90 /**
91 * If the call to RemoteState::_baseOnBreak() returns true
92 * the input parameters are redefined.
93 *
94 * \see StateBase::_baseOnBreak()
95 */
96 bool _baseOnBreak(const EventPtr evt) override;
97
98 /**
99 * \see StateBase::createEmptyCopy()
100 */
101 StateBasePtr createEmptyCopy() const override;
102 /**
103 * \see StateBase::clone()
104 */
105 StateBasePtr clone() const override;
106 /**
107 * \see StateBase::defineParameters()
108 */
109 void defineParameters() override;
110
111 private:
112 bool __checkStatePreconditions();
113 };
114
116} // namespace armarx
#define DEFINEEVENT(NEWEVENT)
this macro declares a new event-class derived vom Event, to have a compiletime check for typos in eve...
void onInitComponent() override
Pure virtual hook for the subclass.
StateBasePtr clone() const override
bool _baseOnBreak(const EventPtr evt) override
If the call to RemoteState::_baseOnBreak() returns true the input parameters are redefined.
StateBasePtr createEmptyCopy() const override
DynamicRemoteState()
Initialize all instance variables.
void onConnectComponent() override
Pure virtual hook for the subclass.
void _baseOnExit() override
Calls RemoteState::_baseOnBreak() and redefines the input parameters.
DynamicRemoteState & operator=(const DynamicRemoteState &source)
Assignment operator which currently is set to fail on any invocation.
void _baseOnEnter() override
Does the setup of the remote statechart and calls RemoteState::_baseOnEnter() afterwards.
std::string getDefaultName() const override
Retrieve default name of component.
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< DynamicRemoteState > DynamicRemoteStatePtr
IceInternal::Handle< Event > EventPtr
Typedef of EventPtr as IceInternal::Handle<Event> for convenience.
Definition Event.h:40
IceInternal::Handle< StateBase > StateBasePtr
Definition StateBase.h:49