25 int64_t input_tag = input_block->
tag();
26 assert((file_item != NULL) && (input_tag >= 0));
61 switch (input_block->
type()) {
65 if (output_block_bulk) output_block_bulk->
MakeStop();
81 if (output_block_bulk) {
93 unsigned offset_in_block = 0;
94 uint64_t cut_mark = 0;
95 while ((cut_mark = chunk_detector->
FindNextCutMark(input_block)) != 0) {
97 uint64_t cut_mark_in_block = cut_mark - chunk_info.
offset;
98 assert(cut_mark_in_block >= offset_in_block);
99 assert(cut_mark_in_block <= input_block->
size());
100 unsigned tail_size = cut_mark_in_block - offset_in_block;
115 if (cut_mark < file_item->
size()) {
128 offset_in_block = cut_mark_in_block;
130 chunk_info.
offset += offset_in_block;
132 assert(input_block->
size() >= offset_in_block);
133 unsigned tail_size = input_block->
size() - offset_in_block;
142 chunk_info.
offset += tail_size;
146 input_block->
Reset();
void MakeDataMove(BlockItem *other)
void set_is_fully_chunked()
ItemAllocator * allocator_
void SetChunkItem(ChunkItem *item)
assert((mem||(size==0))&&"Out Of Memory")
void SetFileItem(FileItem *item)
Xor32Detector * chunk_detector()
virtual void Process(BlockItem *input_block)
void set_size(uint64_t val)
static atomic_int64 tag_seq_
bool has_legacy_bulk_chunk()
Tube< ItemT >::Link * Dispatch(ItemT *item)
void Insert(const Key &key, const Value &value)
uint64_t FindNextCutMark(BlockItem *block)
TubeGroup< BlockItem > * tubes_out_
bool Erase(const Key &key)
void MakeDataCopy(const unsigned char *data, uint32_t size)
bool Lookup(const Key &key, Value *value) const