CernVM-FS  2.12.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sync_item_dummy.h
Go to the documentation of this file.
1 
5 #ifndef CVMFS_SYNC_ITEM_DUMMY_H_
6 #define CVMFS_SYNC_ITEM_DUMMY_H_
7 
8 #include "sync_item.h"
9 
10 #include <ctime>
11 #include <string>
12 
14 #include "sync_union_tarball.h"
15 
16 namespace publish {
17 
19  friend class SyncUnionTarball;
20 
21  protected:
23  const SyncUnion *union_engine)
24  : SyncItem(relative_parent_path, ".cvmfscatalog", union_engine,
25  kItemFile) {}
26 
27  public:
28  bool IsType(const SyncItemType expected_type) const {
29  return expected_type == kItemFile;
30  }
31 
34  std::string name(".cvmfscatalog");
36  dirent.linkcount_ = 1;
37  dirent.mode_ =
38  S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;
39  dirent.uid_ = getuid();
40  dirent.gid_ = getgid();
41  dirent.size_ = 0;
42  dirent.mtime_ = time(NULL);
43  dirent.checksum_ = this->GetContentHash();
44  dirent.is_external_file_ = false;
46 
47  dirent.name_.Assign(name.data(), name.length());
48 
49  return dirent;
50  }
51 
53  return new StringIngestionSource("", GetUnionPath());
54  }
55 
56  void StatScratch(const bool /* refresh */) const { return; }
57 
59 
60  void MakePlaceholderDirectory() const {}
61 };
62 
63 /*
64  * This class represents dummy directories that we know are going to be there
65  * but we still haven't found yet. This is possible in the extraction of
66  * tarball, where the files are not extracted in order (root to leaves) but in a
67  * random fashion.
68  */
70  friend class SyncUnionTarball;
71 
72  public:
75  virtual void MakePlaceholderDirectory() const { rdonly_type_ = kItemDir; }
76 
77  protected:
79  const std::string &filename, const SyncUnion *union_engine,
80  const SyncItemType entry_type)
81  : SyncItemNative(relative_parent_path, filename, union_engine,
82  entry_type) {
83  assert(kItemDir == entry_type);
84 
85  scratch_stat_.obtained = true;
86  scratch_stat_.stat.st_mode = kPermision;
87  scratch_stat_.stat.st_nlink = 1;
88  scratch_stat_.stat.st_uid = getuid();
89  scratch_stat_.stat.st_gid = getgid();
90  }
92  const std::string &filename, const SyncUnion *union_engine,
93  const SyncItemType entry_type, uid_t uid, gid_t gid)
94  : SyncItemNative(relative_parent_path, filename, union_engine,
95  entry_type) {
96  assert(kItemDir == entry_type);
97 
98  scratch_stat_.obtained = true;
99  scratch_stat_.stat.st_mode = kPermision;
100  scratch_stat_.stat.st_nlink = 1;
101  scratch_stat_.stat.st_uid = uid;
102  scratch_stat_.stat.st_gid = gid;
103  }
104 
105  private:
106  static const mode_t kPermision = S_IFDIR | S_IRUSR | S_IWUSR | S_IXUSR |
107  S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
108 };
109 
112 
114 
115  dirent.linkcount_ = 1;
116 
117  dirent.mode_ = kPermision;
118 
119  dirent.uid_ = scratch_stat_.stat.st_uid;
120  dirent.gid_ = scratch_stat_.stat.st_gid;
121  dirent.size_ = 4096;
122  dirent.mtime_ = time(NULL);
123  dirent.checksum_ = this->GetContentHash();
124  dirent.is_external_file_ = this->IsExternalData();
126 
127  dirent.name_.Assign(this->filename().data(), this->filename().length());
128 
129  assert(dirent.IsDirectory());
130 
131  return dirent;
132 }
133 
134 
136  return kItemDir;
137 }
138 
139 } // namespace publish
140 
141 #endif // CVMFS_SYNC_ITEM_DUMMY_H_
SyncItemType GetScratchFiletype() const
bool IsDirectory() const
shash::Any GetContentHash() const
Definition: sync_item.h:121
SyncItemType rdonly_type_
Definition: sync_item.h:268
inode_t inode_
IngestionSource * CreateIngestionSource() const
catalog::DirectoryEntryBase CreateBasicCatalogDirent() const
SyncItemDummyDir(const std::string &relative_parent_path, const std::string &filename, const SyncUnion *union_engine, const SyncItemType entry_type)
void Assign(const char *chars, const unsigned length)
Definition: shortstring.h:61
gid_t gid_
SyncItemType GetScratchFiletype() const
assert((mem||(size==0))&&"Out Of Memory")
static const mode_t kPermision
void StatScratch(const bool) const
void MakePlaceholderDirectory() const
uint64_t size_
NameString name_
platform_stat64 stat
Definition: sync_item.h:259
zlib::Algorithms compression_algorithm_
std::string GetUnionPath() const
Definition: sync_item.cc:249
SyncItemDummyCatalog(const std::string &relative_parent_path, const SyncUnion *union_engine)
uint32_t linkcount_
bool is_external_file_
SyncItemDummyDir(const std::string &relative_parent_path, const std::string &filename, const SyncUnion *union_engine, const SyncItemType entry_type, uid_t uid, gid_t gid)
zlib::Algorithms GetCompressionAlgorithm() const
Definition: sync_item.h:127
std::string relative_parent_path() const
Definition: sync_item.h:175
time_t mtime_
static const inode_t kInvalidInode
bool IsType(const SyncItemType expected_type) const
EntryStat scratch_stat_
Definition: sync_item.h:269
unsigned int mode_
virtual void MakePlaceholderDirectory() const
SyncItemType
Definition: sync_item.h:29
catalog::DirectoryEntryBase CreateBasicCatalogDirent() const
shash::Any checksum_
std::string filename() const
Definition: sync_item.h:174
bool IsExternalData() const
Definition: sync_item.h:81
bool obtained
Definition: sync_item.h:257
uid_t uid_