CernVM-FS  2.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
task_chunk.h
Go to the documentation of this file.
1 
5 #ifndef CVMFS_INGESTION_TASK_CHUNK_H_
6 #define CVMFS_INGESTION_TASK_CHUNK_H_
7 
8 #include <stdint.h>
9 
10 #include <map>
11 
12 #include "ingestion/item.h"
13 #include "ingestion/task.h"
14 #include "smallhash.h"
15 #include "util/atomic.h"
16 #include "util/murmur.hxx"
17 #include "util/posix.h"
18 #include "util/tube.h"
19 
20 class ItemAllocator;
21 
22 class TaskChunk : public TubeConsumer<BlockItem> {
23  public:
25  TubeGroup<BlockItem> *tubes_out,
26  ItemAllocator *allocator)
27  : TubeConsumer<BlockItem>(tube_in)
28  , tubes_out_(tubes_out)
29  , allocator_(allocator) {
30  tag_map_.Init(16, -1, hasher_int64t);
31  }
32 
33  protected:
34  virtual void Process(BlockItem *input_block);
35 
36  private:
37  static inline uint32_t hasher_int64t(const int64_t &value) {
38  return MurmurHash2(&value, sizeof(value), 0x07387a4f);
39  }
40 
44  struct ChunkInfo {
46  : offset(0)
47  , output_tag_chunk(-1)
48  , output_tag_bulk(-1)
49  , next_chunk(NULL)
50  , bulk_chunk(NULL) { }
54  uint64_t offset;
62  int64_t output_tag_bulk;
72  };
73 
78 
84 
88 };
89 
90 #endif // CVMFS_INGESTION_TASK_CHUNK_H_
static uint32_t hasher_int64t(const int64_t &value)
Definition: task_chunk.h:37
int64_t atomic_int64
Definition: atomic.h:18
ItemAllocator * allocator_
Definition: task_chunk.h:86
virtual void Process(BlockItem *input_block)
Definition: task_chunk.cc:24
TagMap tag_map_
Definition: task_chunk.h:87
int64_t output_tag_bulk
Definition: task_chunk.h:62
ChunkItem * next_chunk
Definition: task_chunk.h:67
ChunkItem * bulk_chunk
Definition: task_chunk.h:71
int64_t output_tag_chunk
Definition: task_chunk.h:58
static atomic_int64 tag_seq_
Definition: task_chunk.h:83
TubeGroup< BlockItem > * tubes_out_
Definition: task_chunk.h:85
SmallHashDynamic< int64_t, ChunkInfo > TagMap
Definition: task_chunk.h:77
void Init(uint32_t expected_size, Key empty, uint32_t(*hasher)(const Key &key))
Definition: smallhash.h:58
TaskChunk(Tube< BlockItem > *tube_in, TubeGroup< BlockItem > *tubes_out, ItemAllocator *allocator)
Definition: task_chunk.h:24
uint32_t MurmurHash2(const void *key, int len, uint32_t seed)
Definition: murmur.hxx:23