12 #ifndef ROOT_XrdProofSched
13 #define ROOT_XrdProofSched
46 #include "XrdOuc/XrdOucHash.hh"
47 #include "XrdOuc/XrdOucString.hh"
53 #define kXPSMXNMLEN 17
55 class XrdProofdManager;
56 class XrdProofGroupMgr;
57 class XrdProofdProofServ;
62 class XrdProofSched :
public XrdProofdConfig {
65 XrdProofSched(
const char *name,
66 XrdProofdManager *mgr, XrdProofGroupMgr *grpmgr,
67 const char *cfn, XrdSysError *e = 0);
68 virtual ~XrdProofSched() { }
78 virtual int GetWorkers(XrdProofdProofServ *xps,
79 std::list<XrdProofWorker *> *,
83 virtual int Reschedule();
86 virtual int UpdateSession(XrdProofdProofServ *,
int = 0,
void * = 0) {
return 0; }
89 virtual int MaxSessions()
const {
return fMaxSessions; }
92 virtual int UpdateProperties() {
return 0; }
94 virtual int ExportInfo(XrdOucString &);
96 virtual bool IsValid() {
return fValid; }
98 const char *Name()
const {
return (
const char *) &fName[0]; }
100 virtual int ProcessDirective(XrdProofdDirective *d,
101 char *val, XrdOucStream *cfg,
bool rcf);
102 virtual int Enqueue(XrdProofdProofServ *xps, XrdProofQuery *query);
103 virtual void DumpQueues(
const char *prefix = 0);
105 virtual XrdProofdProofServ *FirstSession();
107 int CheckFrequency()
const {
return fCheckFrequency; }
108 inline XrdProofdPipe *Pipe() {
return &fPipe; }
110 virtual int Config(
bool rcf = 0);
111 virtual int DoDirective(XrdProofdDirective *d,
112 char *val, XrdOucStream *cfg,
bool rcf);
114 enum SchedProtocol { kReschedule = 0 };
117 char fName[kXPSMXNMLEN];
119 XrdProofdManager *fMgr;
120 XrdProofGroupMgr *fGrpMgr;
129 double fNodesFraction;
132 std::list<XrdProofdProofServ *> fQueue;
134 XrdOucHash<XrdProofdDirective> fConfigDirectives;
142 virtual void RegisterDirectives();
143 virtual int DoDirectiveSchedParam(
char *, XrdOucStream *,
bool);
144 virtual int DoDirectiveResource(
char *, XrdOucStream *,
bool);
146 virtual int GetNumWorkers(XrdProofdProofServ *xps);
147 virtual void ResetParameters();
152 typedef XrdProofSched *(*XrdProofSchedLoader_t)(
const char *, XrdProofdManager *,
153 XrdProofGroupMgr *,
const char *,