replace FastCDR and serialise straight into a serdata to avoid an extra copy
This commit is contained in:
parent
e6b6ede709
commit
40a042c6dc
12 changed files with 391 additions and 210 deletions
53
rmw_cyclonedds_cpp/src/serdes.cpp
Normal file
53
rmw_cyclonedds_cpp/src/serdes.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
#include "rmw_cyclonedds_cpp/serdes.hpp"
|
||||
|
||||
cycser::cycser(struct sertopic *topic)
|
||||
{
|
||||
st = ddsi_serstate_new(topic);
|
||||
sd = nullptr;
|
||||
}
|
||||
|
||||
cycser::~cycser()
|
||||
{
|
||||
if (sd == nullptr) {
|
||||
ddsi_serstate_release(st);
|
||||
} else {
|
||||
ddsi_serdata_unref(sd);
|
||||
}
|
||||
}
|
||||
|
||||
cycser& cycser::ref()
|
||||
{
|
||||
assert(sd != nullptr);
|
||||
ddsi_serdata_ref(sd);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void cycser::unref()
|
||||
{
|
||||
assert(sd != nullptr);
|
||||
ddsi_serdata_unref(sd);
|
||||
}
|
||||
|
||||
cycser& cycser::fix()
|
||||
{
|
||||
assert(sd == nullptr);
|
||||
sd = ddsi_serstate_fix(st);
|
||||
return *this;
|
||||
}
|
||||
|
||||
struct serdata *cycser::data()
|
||||
{
|
||||
assert(sd != nullptr);
|
||||
return sd;
|
||||
}
|
||||
|
||||
cycdeser::cycdeser(const void *data_, size_t size_)
|
||||
{
|
||||
data = static_cast<const char *>(data_);
|
||||
lim = size_;
|
||||
pos = 0;
|
||||
}
|
||||
|
||||
cycdeser::~cycdeser()
|
||||
{
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue