46 lines
906 B
C
46 lines
906 B
C
#include "./counter.h"
|
|
|
|
#include <assert.h>
|
|
#include <stddef.h>
|
|
|
|
#include <msgpack.h>
|
|
|
|
#include "util/mpkutil/get.h"
|
|
|
|
void locommon_counter_initialize(locommon_counter_t* counter, size_t first) {
|
|
assert(counter != NULL);
|
|
|
|
*counter = (typeof(*counter)) {
|
|
.next = first,
|
|
};
|
|
}
|
|
|
|
void locommon_counter_deinitialize(locommon_counter_t* counter) {
|
|
assert(counter != NULL);
|
|
|
|
}
|
|
|
|
size_t locommon_counter_count(locommon_counter_t* counter) {
|
|
assert(counter != NULL);
|
|
|
|
return counter->next++;
|
|
}
|
|
|
|
void locommon_counter_pack(
|
|
const locommon_counter_t* counter, msgpack_packer* packer) {
|
|
assert(counter != NULL);
|
|
assert(packer != NULL);
|
|
|
|
msgpack_pack_uint64(packer, counter->next);
|
|
}
|
|
|
|
bool locommon_counter_unpack(
|
|
locommon_counter_t* counter, const msgpack_object* obj) {
|
|
assert(counter != NULL);
|
|
|
|
if (!mpkutil_get_uint64(obj, &counter->next)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|