replace FastCDR and serialise straight into a serdata to avoid an extra copy

This commit is contained in:
Erik Boasson 2018-07-19 16:37:12 +02:00
parent e6b6ede709
commit 40a042c6dc
12 changed files with 391 additions and 210 deletions

View 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()
{
}