xrootd
XrdCmsPrepArgs.hh
Go to the documentation of this file.
1 #ifndef __CMS_PREPARGS__H
2 #define __CMS_PREPARGS__H
3 /******************************************************************************/
4 /* */
5 /* X r d C m s P r e p A r g s . h h */
6 /* */
7 /* (c) 2007 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* All Rights Reserved */
9 /* Produced by Andrew Hanushevsky for Stanford University under contract */
10 /* DE-AC02-76-SFO0515 with the Department of Energy */
11 /******************************************************************************/
12 
13 // $Id$
14 
15 #include "XProtocol/YProtocol.hh"
16 
17 #include "Xrd/XrdJob.hh"
18 #include "XrdCms/XrdCmsNode.hh"
19 #include "XrdCms/XrdCmsRRData.hh"
20 #include "XrdSys/XrdSysPthread.hh"
21 
22 class XrdCmsPrepArgs : public XrdJob
23 {
24 public:
25 static const int iovNum = 2;
26 
28  char *Ident;
29  char *reqid;
30  char *notify;
31  char *prty;
32  char *mode;
33  char *path;
34  char *opaque;
35  char *clPath; // ->coloc path, if any
36  int options;
37  int pathlen; // Includes null byte
38 
39  struct iovec ioV[iovNum]; // To forward the request
40 
41  void DoIt() {if (!XrdCmsNode::do_SelPrep(*this)) delete this;}
42 
43 static void Process();
44 
45  void Queue();
46 
47 static XrdCmsPrepArgs *getRequest();
48 
50 
51  ~XrdCmsPrepArgs() {if (Data) free(Data);}
52 
53 private:
54 
60 static int isIdle;
61  char *Data;
62 
63 };
64 #endif