add a function to get the address and size of serialised data

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2018-07-09 11:22:31 +02:00
parent 455783eed9
commit 8e1bdb8855
2 changed files with 17 additions and 0 deletions

View file

@ -189,4 +189,6 @@ void * ddsi_serstate_append (serstate_t st, size_t n);
void * ddsi_serstate_append_align (serstate_t st, size_t a); void * ddsi_serstate_append_align (serstate_t st, size_t a);
void * ddsi_serstate_append_aligned (serstate_t st, size_t n, size_t a); void * ddsi_serstate_append_aligned (serstate_t st, size_t n, size_t a);
OSAPI_EXPORT void ddsi_serdata_getblob (void **raw, size_t *sz, serdata_t serdata);
#endif #endif

View file

@ -140,6 +140,21 @@ uint32_t ddsi_serdata_size (const struct serdata *serdata)
return (uint32_t) (sizeof (struct CDRHeader) + st->pos); return (uint32_t) (sizeof (struct CDRHeader) + st->pos);
} }
void ddsi_serdata_getblob (void **raw, size_t *sz, serdata_t serdata)
{
const struct serstate *st = serdata->v.st;
if (serdata->v.st->kind == STK_EMPTY)
{
*sz = 0;
*raw = NULL;
}
else
{
*sz = sizeof (struct CDRHeader) + st->pos;
*raw = &serdata->hdr;
}
}
int ddsi_serdata_is_key (const struct serdata * serdata) int ddsi_serdata_is_key (const struct serdata * serdata)
{ {
return serdata->v.st->kind == STK_KEY; return serdata->v.st->kind == STK_KEY;