10 #include "KVDataRepository.h"
11 #include "KVDataRepositoryImpl.h"
43 gDataRepository =
this;
72 if (fLocalrootdir ==
"") {
73 Error(
"Init",
"Top-level directory for repository %s is not defined. Set %s.DataRepository.RootDir variable in .kvrootrc",
74 GetName(), GetName());
83 _impl->SetReadProtocol(fReadprotocol);
102 GetValue(
Form(
"%s.DataRepository.FileTransfer.type", GetName()),
104 if (fTransfertype.Contains(
"bbftp")) {
105 fTransferExec = fTransfertype;
106 fTransfertype =
"bbftp";
108 Error(
"Init",
"Executable for bbftp client not found. Check %s.DataRepository.FileTransfer.type",
112 else if (fTransfertype.Contains(
"sftp")) {
113 fTransferExec = fTransfertype;
114 fTransfertype =
"sftp";
119 else if (fTransfertype.Contains(
"root")) {
120 fTransferExec =
"root";
121 fTransfertype =
"xrd";
125 GetValue(
Form(
"%s.DataRepository.FileTransfer.server", GetName()),
127 fTransferuser =
gEnv->
GetValue(
Form(
"%s.DataRepository.FileTransfer.user", GetName()),
"");
128 if (fTransferuser ==
"") {
130 fTransferuser = user->
fUser;
133 SetFullPath(fAccessroot, fAccessprotocol);
134 SetFullPath(fReadroot, fReadprotocol);
147 Info(
"Print",
"configuration of repository is as follows - ");
148 cout <<
"\tname = " << GetName() << endl;
149 cout <<
"\tRootDir = " << fLocalrootdir.Data() << endl;
150 cout <<
"\tAccessProtocol = " << fAccessprotocol.Data() << endl;
151 cout <<
"\tAccessRootDir = " << fAccessroot.Data() << endl;
152 cout <<
"\tReadProtocol = " << fReadprotocol.Data() << endl;
153 cout <<
"\tReadRootDir = " << fReadroot.Data() << endl;
154 cout <<
"\tCanWrite = " << fCanWrite << endl;
155 cout <<
"\tXRDServer = " << fXrootdserver.Data() << endl;
156 cout <<
"\tXRDRootDir = " << fXrootdrootdir.Data() << endl;
157 cout <<
"\tRFIOServer = " << fRfioserver.Data() << endl;
158 cout <<
"\tRFIORootDir = " << fRfiorootdir.Data() << endl;
159 cout <<
"\tTransferType = " << fTransfertype.Data() << endl;
160 cout <<
"\tTransferServer = " << fTransferserver.Data() << endl;
161 cout <<
"\tTransferUser = " << fTransferuser.Data() << endl;
220 _impl->SetReadProtocol(
"root");
240 else if (tmp ==
"root")
243 else if (tmp ==
"rfio")
247 "Unknown protocol in call to SetFullPath : %s", tmp.
Data());
276 #ifdef __CCIN2P3_RFIO
291 FILE* rfio_fopen(
const char* path,
const char* mode);
292 int rfio_fclose(FILE* s);
293 int rfio_fread(
void* buffer,
size_t size,
size_t count, FILE* stream);
294 int rfio_fwrite(
const void* buffer,
size_t size,
size_t count, FILE* stream);
295 int rfio_feof(FILE* stream);
296 int rfio_stat(
const char* path,
struct stat* statbuf);
297 int rfio_rmdir(
const char* path);
298 int rfio_unlink(
const char* path);
299 int rfio_chmod(
const char* path, mode_t mode);
309 Int_t KVRFIOSystem::Unlink(
const char* path)
316 if (rfio_stat(url.GetFile(), &finfo) < 0)
320 return rfio_rmdir(url.GetFile());
322 return rfio_unlink(url.GetFile());
331 int KVRFIOSystem::Chmod(
const char*
file,
UInt_t mode)
336 return rfio_chmod(url.GetFile(), mode);
char * Form(const char *fmt,...)
Bool_t R_ISDIR(Int_t mode)
R__EXTERN TSystem * gSystem
Base class for KaliVeda framework.
static Bool_t FindExecutable(TString &exec, const Char_t *path="$(PATH)")
static TPluginHandler * LoadPlugin(const Char_t *base, const Char_t *uri="0")
void Warning(const char *method, const char *msgfmt,...) const override
colourised warnings (orange) !
Base class for managing repositories of data.
std::unique_ptr< KVDataRepositoryImpl > _impl
void SetFullPath(TString &path, const TString &protocol)
void SetCanWrite(Bool_t yes=kTRUE)
void ReadWithXrootd(const TString &server, const TString &rootdir)
KVDataRepository()
Default constructor.
void set_impl_backend(const TString &impl_type)
void Print(Option_t *opt="") const override
Print info on repository.
virtual const char * GetValue(const char *name, const char *dflt) const
const char * Data() const
void Form(const char *fmt,...)
virtual UserGroup_t * GetUserInfo(const char *user=nullptr)