00001 00023 #ifndef OPENSPLICE_DDS_COMM_H_ 00024 #define OPENSPLICE_DDS_COMM_H_ 00025 00026 #include <iostream> 00027 #include <pluginlib/class_list_macros.h> 00028 #include <class_loader/multi_library_class_loader.h> 00029 00030 #include "micros_swarm/comm_interface.h" 00031 #include "GSDFPacket.h" 00032 #include "check_status.h" 00033 #include "publisher.h" 00034 #include "subscriber.h" 00035 00036 namespace opensplice_dds_comm{ 00037 00038 class OpenSpliceDDSComm : public micros_swarm::CommInterface{ 00039 public: 00040 OpenSpliceDDSComm(); 00041 void init(std::string name, boost::function<void(const micros_swarm::CommPacket& packet)> func); 00042 void broadcast(const micros_swarm::CommPacket& packet); 00043 void receive(); 00044 private: 00045 void callback(const opensplice_dds_comm::GSDFPacket& dds_msg); 00046 std::string name_; 00047 boost::function<void(const micros_swarm::CommPacket& packet)> parser_func_; 00048 boost::shared_ptr<opensplice_dds_comm::Publisher> packet_publisher_; 00049 boost::shared_ptr<opensplice_dds_comm::Subscriber> packet_subscriber_; 00050 }; 00051 }; 00052 #endif