MCPcopy Create free account
hub / github.com/apache/trafficserver / pack

Method pack

plugins/experimental/stek_share/log_store.cc:193–221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

191}
192
193nuraft::ptr<nuraft::buffer>
194STEKShareLogStore::pack(uint64_t index, int32_t cnt)
195{
196 std::vector<nuraft::ptr<nuraft::buffer>> logs;
197
198 size_t size_total = 0;
199 for (uint64_t i = index; i < index + cnt; ++i) {
200 nuraft::ptr<nuraft::log_entry> le = nullptr;
201 {
202 std::lock_guard<std::mutex> l(logs_lock_);
203 le = logs_[i];
204 }
205 assert(le.get());
206 nuraft::ptr<nuraft::buffer> buf = le->serialize();
207 size_total += buf->size();
208 logs.push_back(buf);
209 }
210
211 nuraft::ptr<nuraft::buffer> buf_out = nuraft::buffer::alloc(sizeof(int32_t) + cnt * sizeof(int32_t) + size_total);
212 buf_out->pos(0);
213 buf_out->put((int32_t)cnt);
214
215 for (auto &entry : logs) {
216 nuraft::ptr<nuraft::buffer> &bb = entry;
217 buf_out->put((int32_t)bb->size());
218 buf_out->put(*bb);
219 }
220 return buf_out;
221}
222
223void
224STEKShareLogStore::apply_pack(uint64_t index, nuraft::buffer &pack)

Callers

nothing calls this directly

Calls 5

posMethod · 0.80
getMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
putMethod · 0.45

Tested by

no test coverage detected