25 #include "Xrd/XrdScheduler.hh"
26 #include "XrdOuc/XrdOucTrace.hh"
31 XrdProofdProtocol *XpdObjectQ::Pop()
35 if ((node = fFirst)) {
36 fFirst = fFirst->fNext;
40 if (node)
return node->fItem;
41 return (XrdProofdProtocol *)0;
47 void XpdObjectQ::Push(XpdObject *node)
49 node->fQTime = fCurage;
51 if (fCount >= fMaxinQ) {
64 void XpdObjectQ::Set(
int inQMax, time_t agemax)
67 fMaxinQ = inQMax; fMaxage = agemax;
68 if (!(fMininQ = inQMax/2)) fMininQ = 1;
73 fSched->Schedule((XrdJob *)
this, agemax + time(0));
79 void XpdObjectQ::DoIt()
88 if ((oldcnt = fCount) > fMininQ) {
96 while(p && (p->fQTime >= fCurage)) { pp = p; p = p->fNext;}
102 pp->fNext = p->fNext;
105 p = ((pp = pp->fNext) ? pp->fNext : 0);
115 if (fTraceON && fTrace->Tracing(fTraceON))
116 {fTrace->Beg(fTraceID);
117 cerr <<Comment <<
" trim done; " <<fCount <<
" of " <<oldcnt <<
" kept";
123 fSched->Schedule((XrdJob *)
this, agemax+time(0));