00001 #ifndef __FRMPSTGXFR_H__ 00002 #define __FRMPSTGXFR_H__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d F r m P s t g X f r . h h */ 00006 /* */ 00007 /* (c) 2009 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: XrdFrmPstgXfr.hh,v 1.3 2009/02/17 00:52:49 abh Exp $ 00014 00015 #include "XrdOuc/XrdOucHash.hh" 00016 #include "XrdSys/XrdSysPthread.hh" 00017 00018 struct Request; 00019 struct XrdFrmPstgXrq; 00020 class XrdOucEnv; 00021 class XrdOucProg; 00022 00023 class XrdFrmPstgXfr 00024 { 00025 public: 00026 00027 static int Init(); 00028 00029 static int Queue(XrdFrmPstgReq::Request *rP, int slot); 00030 00031 void Start(); 00032 00033 XrdFrmPstgXfr(); 00034 ~XrdFrmPstgXfr() {} 00035 00036 private: 00037 static int Notify(XrdFrmPstgReq::Request *rP, int rc, const char *msg=0); 00038 static void Send2File(char *Dest, char *Msg, int Mln); 00039 static void Send2UDP(char *Dest, char *Msg, int Mln); 00040 const char *Stage(XrdFrmPstgXrq *xP, int &retcode); 00041 int StageCmd(XrdFrmPstgXrq *xP, XrdOucEnv *theEnv); 00042 const char *StageOpt(XrdFrmPstgXrq *xP); 00043 00044 static XrdSysMutex hMutex; 00045 static XrdOucHash<XrdFrmPstgXrq> hTab; 00046 00047 static XrdSysMutex qMutex; 00048 static XrdSysSemaphore qReady; 00049 static XrdSysSemaphore qAvail; 00050 static struct XrdFrmPstgXrq *First; 00051 static struct XrdFrmPstgXrq *Last; 00052 static struct XrdFrmPstgXrq *Free; 00053 00054 XrdOucProg *xfrCmd; 00055 char cmdBuff[4096]; 00056 }; 00057 #endif
1.7.1