#ifndef _SIM_MAIN_NODE_H #define _SIM_MAIN_NODE_H #include #include "simulation/msgs/msgs.h" using namespace gazebo; class MainNode { public: static MainNode* GetInstance() { static MainNode instance; return &instance; } template static transport::PublisherPtr Advertise(const std::string &topic, unsigned int _queueLimit = 10, bool _latch = false) { return GetInstance()->main->Advertise(topic, _queueLimit, _latch); } template static transport::SubscriberPtr Subscribe(const std::string &topic, void(T::*fp)(const boost::shared_ptr &), T *obj, bool _latching = false) { return GetInstance()->main->Subscribe(topic, fp, obj, _latching); } template static transport::SubscriberPtr Subscribe(const std::string &topic, void(*fp)(const boost::shared_ptr &), bool _latching = false) { return GetInstance()->main->Subscribe(topic, fp, _latching); } transport::NodePtr main; private: MainNode() { gazebo::transport::init(); main = transport::NodePtr(new transport::Node()); main->Init("frc"); gazebo::transport::run(); } }; #endif