allocate / deallocate ros message
This commit is contained in:
parent
b1bce0aa4e
commit
c6d98ecb2a
2 changed files with 20 additions and 1 deletions
|
@ -25,6 +25,14 @@ public:
|
||||||
SubscriberInterface(const ros_middleware_interface::SubscriberHandle &subscriber_handle, std::string topic_name)
|
SubscriberInterface(const ros_middleware_interface::SubscriberHandle &subscriber_handle, std::string topic_name)
|
||||||
: subscriber_handle_(subscriber_handle), topic_name_(topic_name)
|
: subscriber_handle_(subscriber_handle), topic_name_(topic_name)
|
||||||
{}
|
{}
|
||||||
|
virtual void * create_message()
|
||||||
|
{
|
||||||
|
throw std::runtime_error("not implemented - should always use override from subclass");
|
||||||
|
}
|
||||||
|
virtual void delete_message(void * ros_message)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("not implemented - should always use override from subclass");
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
ros_middleware_interface::SubscriberHandle subscriber_handle_;
|
ros_middleware_interface::SubscriberHandle subscriber_handle_;
|
||||||
std::string topic_name_;
|
std::string topic_name_;
|
||||||
|
@ -40,6 +48,16 @@ public:
|
||||||
Subscriber(const ros_middleware_interface::SubscriberHandle &subscriber_handle, std::string topic_name)
|
Subscriber(const ros_middleware_interface::SubscriberHandle &subscriber_handle, std::string topic_name)
|
||||||
: SubscriberInterface(subscriber_handle, topic_name)
|
: SubscriberInterface(subscriber_handle, topic_name)
|
||||||
{}
|
{}
|
||||||
|
void * create_message()
|
||||||
|
{
|
||||||
|
return new ROSMessage();
|
||||||
|
}
|
||||||
|
void delete_message(void * ros_message)
|
||||||
|
{
|
||||||
|
ROSMessage* msg = (ROSMessage*)ros_message;
|
||||||
|
delete msg;
|
||||||
|
ros_message = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,12 +80,13 @@ public:
|
||||||
{
|
{
|
||||||
// Do callback
|
// Do callback
|
||||||
std::cout << "Callback for subscriber of topic: " << subscriber->topic_name_ << std::endl;
|
std::cout << "Callback for subscriber of topic: " << subscriber->topic_name_ << std::endl;
|
||||||
void * ros_msg = 0;
|
void * ros_msg = subscriber->create_message();
|
||||||
bool taken = ros_middleware_interface::take(subscriber->subscriber_handle_, ros_msg);
|
bool taken = ros_middleware_interface::take(subscriber->subscriber_handle_, ros_msg);
|
||||||
if (taken)
|
if (taken)
|
||||||
{
|
{
|
||||||
std::cout << "- received message on topic: " << subscriber->topic_name_ << std::endl;
|
std::cout << "- received message on topic: " << subscriber->topic_name_ << std::endl;
|
||||||
}
|
}
|
||||||
|
subscriber->delete_message(ros_msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue