Add serialization code to idalloc
This commit is contained in:
@@ -83,6 +83,27 @@ int64_t IdGlobalPool::alloc_id_for_thread(lua_State *L) {
|
||||
}
|
||||
}
|
||||
|
||||
void IdGlobalPool::serialize(StreamBuffer *sb) {
|
||||
sb->write_int64(salvaged_.size());
|
||||
for (int64_t batch : salvaged_) {
|
||||
sb->write_int64(batch);
|
||||
}
|
||||
sb->write_int64(next_batch_);
|
||||
sb->write_int64(next_id_);
|
||||
sb->write_int64(queue_fill_);
|
||||
}
|
||||
|
||||
void IdGlobalPool::deserialize(StreamBuffer *sb) {
|
||||
int64_t salvaged_size = sb->read_int64();
|
||||
salvaged_.resize(salvaged_size);
|
||||
for (int i=0; i < salvaged_size; i++) {
|
||||
salvaged_[i] = sb->read_int64();
|
||||
}
|
||||
next_batch_ = sb->read_int64();
|
||||
next_id_ = sb->read_int64();
|
||||
queue_fill_ = sb->read_int64();
|
||||
}
|
||||
|
||||
IdPlayerPool::IdPlayerPool(IdGlobalPool *gp) {
|
||||
global_ = gp;
|
||||
}
|
||||
@@ -133,6 +154,21 @@ void IdPlayerPool::prepare_thread(lua_State *L) {
|
||||
lua_setnextid(L, get_batch());
|
||||
}
|
||||
|
||||
void IdPlayerPool::serialize(StreamBuffer *sb) {
|
||||
sb->write_int64(ranges_.size());
|
||||
for (int64_t batch : ranges_) {
|
||||
sb->write_int64(batch);
|
||||
}
|
||||
}
|
||||
|
||||
void IdPlayerPool::deserialize(StreamBuffer *sb) {
|
||||
int64_t ranges_size = sb->read_int64();
|
||||
ranges_.resize(ranges_size);
|
||||
for (int i=0; i < ranges_size; i++) {
|
||||
ranges_[i] = sb->read_int64();
|
||||
}
|
||||
}
|
||||
|
||||
LuaDefine(unittests_idalloc, "c") {
|
||||
IdGlobalPool gp;
|
||||
IdPlayerPool pp(&gp);
|
||||
|
||||
Reference in New Issue
Block a user