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:
		
							parent
							
								
									455783eed9
								
							
						
					
					
						commit
						8e1bdb8855
					
				
					 2 changed files with 17 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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_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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -140,6 +140,21 @@ uint32_t ddsi_serdata_size (const struct serdata *serdata)
 | 
			
		|||
    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)
 | 
			
		||||
{
 | 
			
		||||
  return serdata->v.st->kind == STK_KEY;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue