objectlog: add object length helper
This commit is contained in:
parent
24c9f59060
commit
a2f7c621ce
|
@ -200,3 +200,30 @@ objectlog_iterator_t objectlog_next(objectlog_t *log, objectlog_iterator_t itera
|
|||
iterator %= log->ring.size;
|
||||
return iterator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get size of object at index @object_idx
|
||||
*
|
||||
* @returns: -1 on failure, else
|
||||
* non-negative length of object
|
||||
*/
|
||||
long objectlog_get_object_size(objectlog_t *log, int object_idx) {
|
||||
objectlog_iterator_t iter;
|
||||
uint16_t len = 0;
|
||||
|
||||
iter = objectlog_iterator(log, object_idx);
|
||||
if (iter < 0) {
|
||||
return -1;
|
||||
}
|
||||
while (iter >= 0) {
|
||||
uint8_t fragment_size;
|
||||
|
||||
if (!objectlog_get_fragment(log, iter, &fragment_size)) {
|
||||
return -1;
|
||||
}
|
||||
len += fragment_size;
|
||||
iter = objectlog_next(log, iter);
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
|
|
@ -19,3 +19,4 @@ void objectlog_write_string(objectlog_t *log, const char *str);
|
|||
objectlog_iterator_t objectlog_iterator(objectlog_t *log, int object_idx);
|
||||
const void *objectlog_get_fragment(objectlog_t *log, objectlog_iterator_t iterator, uint8_t *len);
|
||||
objectlog_iterator_t objectlog_next(objectlog_t *log, objectlog_iterator_t iterator);
|
||||
long objectlog_get_object_size(objectlog_t *log, int object_idx);
|
||||
|
|
Loading…
Reference in New Issue