00001 #ifndef __FRMREQBOSS_H__ 00002 #define __FRMREQBOSS_H__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d F r m R e q b o s s . h h */ 00006 /* */ 00007 /* (c) 2010 by the Board of Trustees of the Leland Stanford, Jr., University */ 00008 /* All Rights Reserved */ 00009 /* Produced by Andrew Hanushevsky for Stanford University under contract */ 00010 /* DE-AC02-76-SFO0515 with the Department of Energy */ 00011 /******************************************************************************/ 00012 00013 // $Id: XrdFrmReqBoss.hh 35287 2010-09-14 21:19:35Z ganis $ 00014 00015 #include "XrdFrm/XrdFrmReqFile.hh" 00016 #include "XrdFrm/XrdFrmRequest.hh" 00017 #include "XrdSys/XrdSysPthread.hh" 00018 00019 class XrdFrmReqBoss 00020 { 00021 public: 00022 00023 void Add(XrdFrmRequest &Request); 00024 00025 void Del(XrdFrmRequest &Request); 00026 00027 void Process(); 00028 00029 int Server(); 00030 00031 int Start(char *aPath, int aMode); 00032 00033 void Wakeup(int PushIt=1); 00034 00035 XrdFrmReqBoss(const char *Me, int qVal) 00036 : rqReady(0),Persona(Me),theQ(qVal),isPosted(0) {} 00037 ~XrdFrmReqBoss() {} 00038 00039 private: 00040 void Register(XrdFrmRequest &Req, int qNum); 00041 00042 XrdSysSemaphore rqReady; 00043 XrdFrmReqFile *rQueue[XrdFrmRequest::maxPQE]; 00044 const char *Persona; 00045 int theQ; 00046 int isPosted; 00047 }; 00048 #endif