CernVM-FS  2.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
catalog_downloader.h
Go to the documentation of this file.
1 #ifndef CVMFS_CATALOG_DOWNLOADER_H_
2 #define CVMFS_CATALOG_DOWNLOADER_H_
3 
4 #include "catalog_mgr_ro.h"
5 #include "ingestion/task.h"
6 #include "crypto/hash.h"
7 #include "util/concurrency.h"
8 
10 
13  explicit CatalogDownloadResult(const std::string &p, const std::string &h)
14  : db_path(p), hash(h) { }
15  std::string db_path;
16  std::string hash;
17 };
18 
20  public:
21  explicit CatalogItem(const shash::Any &hash);
23  shash::Any empty;
24  return new CatalogItem(empty);
25  }
26  bool IsQuitBeacon() {
27  return hash_.IsNull();
28  }
30  return &hash_;
31  }
32 
33  private:
35 };
36 
38  : public TubeConsumer<CatalogItem>
39  , public Observable<CatalogDownloadResult> {
40  public:
42  : TubeConsumer<CatalogItem>(tube_in), tube_counter_(tube_counter), catalog_mgr_(catalog_mgr) { }
43 
44  protected:
45  virtual void Process(CatalogItem *input_hash);
46 
47  private:
50 };
51 
52 class CatalogDownloadPipeline : public Observable<CatalogDownloadResult> {
53  public:
56 
57  void Spawn();
58  void Process(const shash::Any &catalog_hash);
59  void WaitFor();
60 
61  void OnFileProcessed(const CatalogDownloadResult &catalog_download_result);
62 
63  private:
64  bool spawned_;
67 
69 
71 };
72 
73 #endif // CVMFS_CATALOG_DOWNLOADER_H_
bool IsNull() const
Definition: hash.h:371
catalog::SimpleCatalogManager * catalog_mgr_
int kCatalogDownloadMultiplier
CatalogDownloadResult(const std::string &p, const std::string &h)
void Process(const shash::Any &catalog_hash)
virtual void Process(CatalogItem *input_hash)
Tube< CatalogItem > * tube_counter_
static CatalogItem * CreateQuitBeacon()
Tube< CatalogItem > tube_counter_
Tube< CatalogItem > tube_input_
TaskCatalogDownload(catalog::SimpleCatalogManager *catalog_mgr, Tube< CatalogItem > *tube_in, Tube< CatalogItem > *tube_counter)
CatalogItem(const shash::Any &hash)
shash::Any hash_
void OnFileProcessed(const CatalogDownloadResult &catalog_download_result)
CatalogDownloadPipeline(catalog::SimpleCatalogManager *catalog_mgr)
TubeConsumerGroup< CatalogItem > tasks_download_
shash::Any * GetHash()
catalog::SimpleCatalogManager * catalog_mgr_