50extern XrdScheduler*
schedP;
52extern XrdSysError
Elog;
68 admPath(aPath), chkInterval(chkT)
74 if ((admDirFD = XrdSysFD_Open(aPath, O_DIRECTORY|O_RDONLY)) < 0)
75 {
Elog.Emsg(
"Config", errno,
"open admin path", aPath);
82 if (unlinkat(admDirFD,
IdleFN, 0) && errno != ENOENT)
83 {
Elog.Emsg(
"Config", errno,
"remove IDLE file in admin path", aPath);
92 schedP->Schedule(
this, time(0)+chkT);
109 {
Elog.Emsg(
"StopMon",
"Invalid deletion of StopMon parent instance for",
125 static const mode_t idleMode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
126 static const int idleOflg = O_CREAT | O_RDWR | O_CLOEXEC;
132 {
Elog.Emsg(
"StopMon",
"Invalid DoIt() call on child instance for",admPath);
142 {
Elog.Emsg(
"StopMon",
"STOP file found in", admPath);
144 Elog.Emsg(
"StopMon",
"Drain complete; entering idle state...");
145 int iFD = openat(admDirFD,
IdleFN, idleOflg, idleMode);
146 if (iFD < 0)
Elog.Emsg(
"StopMon",errno,
"create IDLE file in",admPath);
149 unlinkat(admDirFD,
IdleFN, 0);
151 Elog.Emsg(
"StopMon",
"Resuming execution; STOP file removed!");
156 schedP->Schedule(
this, time(0)+chkInterval);
XrdJob(const char *desc="")
virtual ~XrdOssArcStopMon()
XrdOssArcStopMon(const char *apath, int chkT, bool &aOK)
virtual void DoIt() override
static void Snooze(int seconds)
static const char * StopFN
static const char * IdleFN
XrdSysTrace ArcTrace("OssArc")
XrdSysError Elog(0, "OssArc_")