CernVM-FS  2.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
payload_processor.h
Go to the documentation of this file.
1 
5 #ifndef CVMFS_RECEIVER_PAYLOAD_PROCESSOR_H_
6 #define CVMFS_RECEIVER_PAYLOAD_PROCESSOR_H_
7 
8 #include <stdint.h>
9 
10 #include <map>
11 #include <string>
12 #include <vector>
13 
14 #include "pack.h"
15 #include "upload.h"
16 #include "util/raii_temp_dir.h"
17 
18 namespace receiver {
19 
20 struct FileInfo {
21  FileInfo();
22  explicit FileInfo(const ObjectPackBuild::Event &event);
23  FileInfo(const FileInfo &other);
24  FileInfo &operator=(const FileInfo &other);
25 
27  size_t total_size;
28  size_t current_size;
30  std::vector<unsigned char> hash_buffer;
31 };
32 
43  public:
44  enum Result {
49  };
50 
52  virtual ~PayloadProcessor();
53 
54  Result Process(int fdin, const std::string &header_digest,
55  const std::string &path, uint64_t header_size);
56 
57  virtual void ConsumerEventCallback(const ObjectPackBuild::Event &event);
58 
59  virtual void OnUploadJobComplete(const upload::UploaderResults &results,
60  void *buffer);
61 
62  int GetNumErrors() const { return num_errors_; }
63 
65 
66  protected:
67  // NOTE: These methods are made virtual such that they can be mocked for
68  // the purpose of unit testing
69  virtual Result Initialize();
70  virtual Result Finalize();
71 
72  private:
73  typedef std::map<shash::Any, FileInfo>::iterator FileIterator;
74  std::map<shash::Any, FileInfo> pending_files_;
75  std::string current_repo_;
80 };
81 
82 } // namespace receiver
83 
84 #endif // CVMFS_RECEIVER_PAYLOAD_PROCESSOR_H_
upload::UploadStreamHandle * handle
FileInfo & operator=(const FileInfo &other)
UniquePtr< upload::AbstractUploader > uploader_
UniquePtr< perf::StatisticsTemplate > statistics_
virtual void OnUploadJobComplete(const upload::UploaderResults &results, void *buffer)
virtual void ConsumerEventCallback(const ObjectPackBuild::Event &event)
std::vector< unsigned char > hash_buffer
shash::ContextPtr hash_context
std::map< shash::Any, FileInfo > pending_files_
UniquePtr< RaiiTempDir > temp_dir_
Result Process(int fdin, const std::string &header_digest, const std::string &path, uint64_t header_size)
std::map< shash::Any, FileInfo >::iterator FileIterator
void SetStatistics(perf::Statistics *st)