4#include "XrdVersion.hh"
18#define OFS_NAME "libXrdOfs.so"
38 eDest.
Emsg(
"Config",
"Unable to load OFS filesystem.");
47 if (!(fs = (*ep)(0,
eDest.
logger(), config_file.c_str())))
49 eDest.
Emsg(
"Config",
"Unable to create file system object via", fslib.c_str());
65 FileSystem* fs = NULL;
66 if (envP && envP->
GetInt(
"XrdOssThrottle") == 1) {
68 eDest.
Emsg(
"Config",
"XrdOssThrottle is loaded; not stacking XrdThrottle on OFS. "
69 "This is a warning for backward compatibility; this configuration may generate an "
70 "error in the future.");
73 FileSystem::Initialize(fs, native_fs, lp, configfn, envP);
101FileSystem* FileSystem::m_instance = 0;
103FileSystem::FileSystem()
104 : m_eroute(0), m_trace(&m_eroute), m_sfs_ptr(0), m_initialized(false), m_throttle(&m_eroute, &m_trace)
109FileSystem::~FileSystem() {}
112FileSystem::Initialize(FileSystem *&fs,
113 XrdSfsFileSystem *native_fs,
115 const char *configfn,
119 if (m_instance == NULL && !(m_instance =
new FileSystem()))
124 if (!fs->m_initialized)
126 fs->m_config_file = configfn;
127 fs->m_eroute.logger(lp);
128 fs->m_eroute.Say(
"Initializing a Throttled file system.");
129 if (fs->Configure(fs->m_eroute, native_fs, envP))
131 fs->m_eroute.Say(
"Initialization of throttled file system failed.");
135 fs->m_throttle.
Init();
136 fs->m_initialized =
true;
140#define TS_Xeq(key, func) NoGo = (strcmp(key, var) == 0) ? func(Config) : 0
145 if (Config.Configure(m_config_file))
147 log.
Emsg(
"Config",
"Unable to load configuration file", m_config_file.c_str());
152 m_trace.What = Config.GetTraceLevels();
155 m_sfs_ptr = native_fs ? native_fs :
LoadFS(Config.GetFileSystemLibrary(), m_eroute, m_config_file);
156 if (!m_sfs_ptr)
return 1;
164 log.
Say(
"Config",
"Throttle g-stream has", gstream ?
"" :
" NOT",
" been configured via xrootd.mongstream directive");
171 FeatureSet = m_sfs_ptr->Features();
XrdVERSIONINFO(XrdClGetPlugIn, XrdClGetPlugIn) extern "C"
XrdSfsFileSystem * XrdSfsGetFileSystem(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn)
XrdSysError eDest(0, "HttpMon")
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)
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)
XrdSysLogger * logger(XrdSysLogger *lp=0)
void * getPlugin(const char *pname, int optional=0)
void FromConfig(XrdThrottle::Configuration &config)
void SetMonitor(XrdXrootdGStream *gstream)
friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *, XrdOucEnv *)
XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *configfn, XrdOucEnv *envP)