GCC Code Coverage Report
Directory: cvmfs/ Exec Total Coverage
File: cvmfs/upload_gateway.h Lines: 2 3 66.7 %
Date: 2019-02-03 02:48:13 Branches: 0 2 0.0 %

Line Branch Exec Source
1
/**
2
 * This file is part of the CernVM File System.
3
 */
4
5
#ifndef CVMFS_UPLOAD_GATEWAY_H_
6
#define CVMFS_UPLOAD_GATEWAY_H_
7
8
#include <atomic.h>
9
10
#include <string>
11
12
#include "pack.h"
13
#include "repository_tag.h"
14
#include "session_context.h"
15
#include "upload_facility.h"
16
17
namespace upload {
18
19
struct GatewayStreamHandle : public UploadStreamHandle {
20
  GatewayStreamHandle(const CallbackTN* commit_callback,
21
                      ObjectPack::BucketHandle bkt);
22
23
  ObjectPack::BucketHandle bucket;
24
};
25
26
class GatewayUploader : public AbstractUploader {
27
 public:
28
7
  struct Config {
29
7
    Config() : session_token_file(), key_file(), api_url() {}
30
    Config(const std::string& session_token_file, const std::string& key_file,
31
           const std::string& api_url)
32
        : session_token_file(session_token_file),
33
          key_file(key_file),
34
          api_url(api_url) {}
35
    std::string session_token_file;
36
    std::string key_file;
37
    std::string api_url;
38
  };
39
40
  static bool WillHandle(const SpoolerDefinition& spooler_definition);
41
42
  static bool ParseSpoolerDefinition(
43
      const SpoolerDefinition& spooler_definition, Config* config);
44
45
  explicit GatewayUploader(const SpoolerDefinition& spooler_definition);
46
47
  virtual ~GatewayUploader();
48
49
  virtual bool Initialize();
50
51
  virtual bool FinalizeSession(bool commit, const std::string& old_root_hash,
52
                               const std::string& new_root_hash,
53
                               const RepositoryTag& tag);
54
55
  virtual void WaitForUpload() const;
56
57
  virtual std::string name() const;
58
59
  virtual bool Peek(const std::string& path) const;
60
61
  virtual bool PlaceBootstrappingShortcut(const shash::Any& object) const;
62
63
  virtual unsigned int GetNumberOfErrors() const;
64
65
 protected:
66
  virtual void FileUpload(const std::string& local_path,
67
                          const std::string& remote_path,
68
                          const CallbackTN* callback = NULL);
69
70
  virtual UploadStreamHandle* InitStreamedUpload(
71
      const CallbackTN* callback = NULL);
72
73
  virtual void StreamedUpload(UploadStreamHandle* handle, UploadBuffer buffer,
74
                              const CallbackTN* callback);
75
76
  virtual void FinalizeStreamedUpload(UploadStreamHandle* handle,
77
                                      const shash::Any& content_hash);
78
79
  virtual void DoRemoveAsync(const std::string& file_to_delete);
80
81
 protected:
82
  virtual bool ReadSessionTokenFile(const std::string& token_file_name,
83
                                    std::string* token);
84
85
  virtual bool ReadKey(const std::string& key_file, std::string* key_id,
86
                       std::string* secret);
87
88
  virtual int64_t DoGetObjectSize(const std::string &file_name);
89
90
 private:
91
  void BumpErrors() const;
92
93
  Config config_;
94
  SessionContext* session_context_;
95
  mutable atomic_int32 num_errors_;
96
};
97
98
}  // namespace upload
99
100
#endif  // CVMFS_UPLOAD_GATEWAY_H_