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  */
53  virtual public RemoteState
54  {
55  public:
56  /**
57  * Initialize all instance variables
58  */
60  /**
61  * Create a copy of \p source
62  */
64  /**
65  * Assignment operator which currently is set to fail on any invocation
66  */
67  DynamicRemoteState& operator=(const DynamicRemoteState& source);
68 
69  // inherited from Component
70  std::string getDefaultName() const override;
71  void onInitComponent() override;
72  void onConnectComponent() override;
73 
74  // inherited from StateBase
75  /**
76  * Does the setup of the remote statechart and calls RemoteState::_baseOnEnter()
77  * afterwards.
78  *
79  * The Event LoadingFailed is emitted if connecting to the remote
80  * statechart failed.
81  *
82  * \see StateBase::_baseOnEnter()
83  */
84  void _baseOnEnter() override;
85  /**
86  * Calls RemoteState::_baseOnBreak() and redefines the input parameters
87  *
88  * \see StateBase::_baseOnBreak()
89  */
90  void _baseOnExit() override;
91  /**
92  * If the call to RemoteState::_baseOnBreak() returns true
93  * the input parameters are redefined.
94  *
95  * \see StateBase::_baseOnBreak()
96  */
97  bool _baseOnBreak(const EventPtr evt) override;
98 
99  /**
100  * \see StateBase::createEmptyCopy()
101  */
102  StateBasePtr createEmptyCopy() const override;
103  /**
104  * \see StateBase::clone()
105  */
106  StateBasePtr clone() const override;
107  /**
108  * \see StateBase::defineParameters()
109  */
110  void defineParameters() override;
111  private:
112  bool __checkStatePreconditions();
113  };
114 
116 }
117 
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:681
armarx::DEFINEEVENT
DEFINEEVENT(EvInit) struct StateRun
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28