xrootd
XrdEcObjCfg.hh
Go to the documentation of this file.
1 /*
2  * XrdEcObjCfg.hh
3  *
4  * Created on: Nov 25, 2019
5  * Author: simonm
6  */
7 
8 #ifndef SRC_XRDEC_XRDECOBJCFG_HH_
9 #define SRC_XRDEC_XRDECOBJCFG_HH_
10 
11 #include <cstdlib>
12 #include <string>
13 #include <vector>
14 #include <sstream>
15 #include <iomanip>
16 
17 namespace XrdEc
18 {
19  struct ObjCfg
20  {
21  ObjCfg() = delete;
22 
23  ObjCfg( const std::string &obj, uint8_t nbdata, uint8_t nbparity, uint64_t chunksize ) :
24  obj( obj ),
26  nbparity( nbparity ),
27  nbdata( nbdata ),
32  {
33 
34  }
35 
36  ObjCfg( const ObjCfg &objcfg ) : obj( objcfg.obj ),
37  nbchunks( objcfg.nbchunks ),
38  nbparity( objcfg.nbparity ),
39  nbdata( objcfg.nbdata ),
40  datasize( objcfg.datasize ),
41  chunksize( objcfg.chunksize ),
42  paritysize( objcfg.paritysize ),
43  blksize( objcfg.blksize ),
44  plgr( objcfg.plgr )
45  {
46  }
47 
48  inline std::string GetDataUrl( size_t i ) const
49  {
50  std::string url = plgr[i] + '/' + obj;
51  if( !dtacgi.empty() ) url += '?' + dtacgi[i];
52  return url;
53  }
54 
55  inline std::string GetMetadataUrl( size_t i ) const
56  {
57  std::string url = plgr[i] + '/' + obj + ".mt";
58  if( !mdtacgi.empty() ) url += '?' + mdtacgi[i];
59  return url;
60  }
61 
62  inline std::string GetFileName( size_t blknb, size_t strpnb ) const
63  {
64  return obj + '.' + std::to_string( blknb ) + '.' + std::to_string( strpnb );
65  }
66 
67  const std::string obj;
68  const uint8_t nbchunks; // number of chunks in block
69  const uint8_t nbparity; // number of chunks in parity
70  const uint8_t nbdata; // number of chunks in data
71  const uint64_t datasize; // size of the data in the block
72  const uint64_t chunksize; // size of single chunk (nbchunks * chunksize = blksize)
73  const uint64_t paritysize; // size of the parity in the block
74  const uint64_t blksize; // the whole block size (data + parity) in MB
75 
76  std::vector<std::string> plgr;
77  std::vector<std::string> dtacgi;
78  std::vector<std::string> mdtacgi;
79  };
80 }
81 
82 
83 #endif /* SRC_XRDEC_XRDECOBJCFG_HH_ */
XrdEc::ObjCfg
Definition: XrdEcObjCfg.hh:20
XrdEc
Definition: XrdClZipArchive.hh:45
XrdEc::ObjCfg::blksize
const uint64_t blksize
Definition: XrdEcObjCfg.hh:74
XrdEc::ObjCfg::nbparity
const uint8_t nbparity
Definition: XrdEcObjCfg.hh:69
XrdEc::ObjCfg::ObjCfg
ObjCfg(const std::string &obj, uint8_t nbdata, uint8_t nbparity, uint64_t chunksize)
Definition: XrdEcObjCfg.hh:23
XrdEc::ObjCfg::nbchunks
const uint8_t nbchunks
Definition: XrdEcObjCfg.hh:68
XrdEc::ObjCfg::GetFileName
std::string GetFileName(size_t blknb, size_t strpnb) const
Definition: XrdEcObjCfg.hh:62
XrdEc::ObjCfg::plgr
std::vector< std::string > plgr
Definition: XrdEcObjCfg.hh:76
XrdEc::ObjCfg::nbdata
const uint8_t nbdata
Definition: XrdEcObjCfg.hh:70
XrdEc::ObjCfg::paritysize
const uint64_t paritysize
Definition: XrdEcObjCfg.hh:73
XrdEc::ObjCfg::ObjCfg
ObjCfg()=delete
XrdEc::ObjCfg::mdtacgi
std::vector< std::string > mdtacgi
Definition: XrdEcObjCfg.hh:78
XrdEc::ObjCfg::GetMetadataUrl
std::string GetMetadataUrl(size_t i) const
Definition: XrdEcObjCfg.hh:55
XrdEc::ObjCfg::datasize
const uint64_t datasize
Definition: XrdEcObjCfg.hh:71
XrdEc::ObjCfg::obj
const std::string obj
Definition: XrdEcObjCfg.hh:67
XrdEc::ObjCfg::dtacgi
std::vector< std::string > dtacgi
Definition: XrdEcObjCfg.hh:77
XrdEc::ObjCfg::GetDataUrl
std::string GetDataUrl(size_t i) const
Definition: XrdEcObjCfg.hh:48
XrdEc::ObjCfg::chunksize
const uint64_t chunksize
Definition: XrdEcObjCfg.hh:72
XrdEc::ObjCfg::ObjCfg
ObjCfg(const ObjCfg &objcfg)
Definition: XrdEcObjCfg.hh:36