26 const int64_t input_tag = input_block->
tag();
27 assert((file_item != NULL) && (input_tag >= 0));
62 switch (input_block->
type()) {
66 if (output_block_bulk)
83 if (output_block_bulk) {
95 unsigned offset_in_block = 0;
96 uint64_t cut_mark = 0;
97 while ((cut_mark = chunk_detector->
FindNextCutMark(input_block)) != 0) {
99 const uint64_t cut_mark_in_block = cut_mark - chunk_info.
offset;
100 assert(cut_mark_in_block >= offset_in_block);
101 assert(cut_mark_in_block <= input_block->
size());
102 const unsigned tail_size = cut_mark_in_block - offset_in_block;
117 if (cut_mark < file_item->
size()) {
130 offset_in_block = cut_mark_in_block;
132 chunk_info.
offset += offset_in_block;
134 assert(input_block->
size() >= offset_in_block);
135 const unsigned tail_size = input_block->
size() - offset_in_block;
144 chunk_info.
offset += tail_size;
148 input_block->
Reset();
159 if (output_block_bulk)
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