00001 #ifndef __XRDFRMPROXY__
00002 #define __XRDFRMPROXY__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "XrdFrm/XrdFrmRequest.hh"
00016
00017 class XrdFrmReqAgent;
00018 class XrdOucStream;
00019 class XrdSysLogger;
00020
00021 class XrdFrmProxy
00022 {
00023 public:
00024
00025 int Add(char Opc, const char *Lfn, const char *Opq, const char *Usr,
00026 const char *Rid, const char *Nop, const char *Pop,
00027 int Prty=1);
00028
00029 int Del(char Opc, const char *Rid);
00030
00031 static const int opGet = 1;
00032 static const int opPut = 2;
00033 static const int opMig = 4;
00034 static const int opStg = 8;
00035 static const int opAll = 15;
00036
00037 class Queues
00038 {friend class XrdFrmProxy;
00039 int Offset;
00040 char Prty;
00041 char QList;
00042 char QNow;
00043 char Active;
00044 public:
00045 Queues(int opX) : Offset(0), Prty(0), QList(opX), QNow(0), Active(0) {}
00046 ~Queues() {}
00047 };
00048
00049 int List(Queues &State, char *Buff, int Bsz);
00050
00051 int List(int qType, int qPrty, XrdFrmRequest::Item *Items, int Num);
00052
00053 int Init(int opX, const char *aPath, int aMode, const char *qPath=0);
00054
00055 XrdFrmProxy(XrdSysLogger *lP, const char *iName, int Debug=0);
00056 ~XrdFrmProxy() {}
00057
00058 private:
00059
00060 int Init2(const char *cfgFN);
00061 int qChk(XrdOucStream &cFile);
00062
00063 struct o2qMap {const char *qName; int qType; int oType;};
00064
00065 static o2qMap oqMap[];
00066 static int oqNum;
00067
00068 XrdFrmReqAgent *Agent[XrdFrmRequest::numQ];
00069 const char *insName;
00070 char *intName;
00071 char *QPath;
00072 };
00073 #endif