EventSource.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014-2016 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 
18 #ifndef _GAZEBO_PLUGIN_EVENTSOURCE_HH_
19 #define _GAZEBO_PLUGIN_EVENTSOURCE_HH_
20 
21 #ifdef _WIN32
22  // Ensure that Winsock2.h is included before Windows.h, which can get
23  // pulled in by anybody (e.g., Boost).
24 #include <Winsock2.h>
25 #endif
26 
27 #include <string>
28 
29 #include "gazebo/gazebo.hh"
30 #include "gazebo/physics/physics.hh"
31 #include "gazebo/common/common.hh"
33 
34 #include "SimEventsException.hh"
35 
36 namespace gazebo
37 {
40  {
46  const std::string &_type,
47  physics::WorldPtr _world);
48 
50  public: virtual ~EventSource();
51 
55  public: void Emit(const std::string& _data) const;
56 
59  public: virtual void Load(const sdf::ElementPtr _sdf);
60 
62  public: virtual void Init();
63 
67  public: virtual bool IsActive() const;
68 
70  protected: std::string name;
71 
73  protected: std::string type;
74 
77 
80  protected: bool active;
81 
84  };
85 
86  typedef boost::shared_ptr<EventSource> EventSourcePtr;
87 
90  {
94  public: template<typename T>
96  ConnectSpawnModel(T _subscriber)
97  { return spawnModel.Connect(_subscriber); }
98 
101  public: static void DisconnectSpawnModel(
102  event::ConnectionPtr _subscriber)
103  { spawnModel.Disconnect(_subscriber); }
104 
107  };
108 }
109 
110 #endif
boost::shared_ptr< Connection > ConnectionPtr
Definition: CommonTypes.hh:153
virtual void Disconnect(ConnectionPtr _c)
Disconnect a callback to this event.
Definition: Event.hh:633
void Emit(const std::string &_data) const
emit an event with data to the internal publisher (and using the internal type)
Forward declarations for transport.
boost::shared_ptr< EventSource > EventSourcePtr
Definition: EventSource.hh:86
virtual bool IsActive() const
An event source can be used to enable other events.
virtual void Load(const sdf::ElementPtr _sdf)
Load from an sdf element (with possible configuration data)
virtual ~EventSource()
Destructor.
static event::ConnectionPtr ConnectSpawnModel(T _subscriber)
Connect a boost::slot to the spawn model event.
Definition: EventSource.hh:96
static void DisconnectSpawnModel(event::ConnectionPtr _subscriber)
Disconnect a boost::slot to the spawn model event.
Definition: EventSource.hh:101
Gazebo events to detect model creation/deletion.
Definition: EventSource.hh:89
ConnectionPtr Connect(const boost::function< T > &_subscriber)
Connect a callback to this event.
Definition: Event.hh:617
std::string type
Type of event.
Definition: EventSource.hh:73
The base class for emitting SimEvents.
Definition: EventSource.hh:39
virtual void Init()
Initialize the event.
boost::shared_ptr< World > WorldPtr
Definition: PhysicsTypes.hh:84
EventSource(transport::PublisherPtr _pub, const std::string &_type, physics::WorldPtr _world)
Constructor.
static event::EventT< void(std::string, bool)> spawnModel
A model has been completed and uploaded onto the server.
Definition: EventSource.hh:106
physics::WorldPtr world
Pointer to the world.
Definition: EventSource.hh:76
bool active
True if the event source is active.
Definition: EventSource.hh:80
std::string name
Name of the event.
Definition: EventSource.hh:70
transport::PublisherPtr pub
a way to send messages to the other topics (to the REST)
Definition: EventSource.hh:83
boost::shared_ptr< Publisher > PublisherPtr
Definition: TransportTypes.hh:49