16#define OFS_NAME "libXrdOfs.so"
36 eDest.Emsg(
"Config",
"Unable to load OFS filesystem.");
45 if (!(fs = (*ep)(0,
eDest.logger(), config_file.c_str())))
47 eDest.Emsg(
"Config",
"Unable to create file system object via", fslib.c_str());
63 FileSystem* fs = NULL;
64 if (envP && envP->
GetInt(
"XrdOssThrottle") == 1) {
66 eDest.Emsg(
"Config",
"XrdOssThrottle is loaded; not stacking XrdThrottle on OFS. "
67 "This is a warning for backward compatibility; this configuration may generate an "
68 "error in the future.");
71 FileSystem::Initialize(fs, native_fs, lp, configfn, envP);
99FileSystem* FileSystem::m_instance = 0;
101FileSystem::FileSystem()
102 : m_eroute(0), m_trace(&m_eroute), m_sfs_ptr(0), m_initialized(false), m_throttle(&m_eroute, &m_trace)
107FileSystem::~FileSystem() {}
110FileSystem::Initialize(FileSystem *&fs,
111 XrdSfsFileSystem *native_fs,
113 const char *configfn,
117 if (m_instance == NULL && !(m_instance =
new FileSystem()))
122 if (!fs->m_initialized)
124 fs->m_config_file = configfn;
125 fs->m_eroute.logger(lp);
126 fs->m_eroute.Say(
"Initializing a Throttled file system.");
127 if (fs->Configure(fs->m_eroute, native_fs, envP))
129 fs->m_eroute.Say(
"Initialization of throttled file system failed.");
133 fs->m_throttle.
Init();
134 fs->m_initialized =
true;
138#define TS_Xeq(key, func) NoGo = (strcmp(key, var) == 0) ? func(Config) : 0
143 if (Config.Configure(m_config_file))
145 log.
Emsg(
"Config",
"Unable to load configuration file", m_config_file.c_str());
150 m_trace.What = Config.GetTraceLevels();
153 m_sfs_ptr = native_fs ? native_fs :
LoadFS(Config.GetFileSystemLibrary(), m_eroute, m_config_file);
154 if (!m_sfs_ptr)
return 1;
162 log.
Say(
"Config",
"Throttle g-stream has", gstream ?
"" :
" NOT",
" been configured via xrootd.mongstream directive");
169 FeatureSet = m_sfs_ptr->Features();
XrdSfsFileSystem * XrdSfsGetFileSystem(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn)
static XrdSysError eDest(0,"crypto_")
XrdSfsFileSystem * XrdSfsGetDefaultFileSystem(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn, XrdOucEnv *EnvInfo)
XrdSfsFileSystem * XrdSfsGetFileSystem2(XrdSfsFileSystem *nativeFS, XrdSysLogger *logger, const char *configFn, XrdOucEnv *envP)
static XrdSfsFileSystem * LoadFS(const std::string &fslib, XrdSysError &eDest, const std::string &config_file)
XrdSfsFileSystem * XrdSfsGetFileSystem2(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn, XrdOucEnv *envP)
XrdSfsFileSystem * XrdSfsGetFileSystem(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn)
XrdVERSIONINFO(XrdSfsGetFileSystem, FileSystem)
long GetInt(const char *varname)
static int Export(const char *Var, const char *Val)
void * GetPtr(const char *varname)
XrdSfsFileSystem()
Constructor and Destructor.
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
void Say(const char *text1, const char *text2=0, const char *txt3=0, const char *text4=0, const char *text5=0, const char *txt6=0)
void * getPlugin(const char *pname, int optional=0)
void FromConfig(XrdThrottle::Configuration &config)
void SetMonitor(XrdXrootdGStream *gstream)
XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn, XrdOucEnv *envP)