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 *,