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 
29 namespace 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  */
66  DynamicRemoteState& operator=(const DynamicRemoteState& source);
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
IceInternal::Handle< Event >
RemoteState.h
armarx::RemoteState
This Statetype is used to create a state instance that represents a state that is located in another ...
Definition: RemoteState.h:62
armarx::DynamicRemoteState
DynamicRemoteStates can be used to connect to remote statecharts dynamically at runtime.
Definition: DynamicRemoteState.h:52
boost::source
Vertex source(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:661
armarx::DEFINEEVENT
DEFINEEVENT(EvInit) struct StateRun
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27