XrdOucMsubs.hh

Go to the documentation of this file.
00001 #ifndef __XRDOUCMSUBS_H__
00002 #define __XRDOUCMSUBS_H__
00003 /******************************************************************************/
00004 /*                                                                            */
00005 /*                        X r d O u c M S u b s . h h                         */
00006 /*                                                                            */
00007 /* (c) 2006 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: XrdOucMsubs.hh 35287 2010-09-14 21:19:35Z ganis $
00014 
00015 #include <stdlib.h>
00016 
00017 #include "XrdSys/XrdSysError.hh"
00018 #include "XrdOuc/XrdOucEnv.hh"
00019 #include "XrdOuc/XrdOucName2Name.hh"
00020 
00021 /******************************************************************************/
00022 /*      P r e d e f i n e d   E n v i r o n m e n t   V a r i a b l e s       */
00023 /******************************************************************************/
00024 
00025 #define CMS_CID             "cms&cid"
00026 #define SEC_USER            "sec&user"
00027 #define SEC_HOST            "sec&host"
00028 #define SEC_POLICY          "sec&policy"
00029 #define XRD_INS             "xrd&ins"
00030   
00031 /******************************************************************************/
00032 /*                           X r d O u c M s u b s                            */
00033 /******************************************************************************/
00034   
00035 struct XrdOucMsubsInfo
00036 {
00037 const char      *Tid;       // $TID   or $RID  unless Rid is defined.
00038 XrdOucEnv       *Env;
00039 XrdOucName2Name *N2N;
00040 const char      *lfn;       // $LFN
00041 const char      *lfn2;      // $LFN2  or $NOTIFY or $SRC
00042 const char      *pfn;       // $PFN
00043 const char      *pfn2;      // $PFN2             or $DST
00044 const char      *misc;      // $OPTS  or $MDP
00045 const char      *Rid;       // $RID for real
00046 const char      *Src;       // $SRC
00047 const char      *Dst;       // $DST
00048 char            *pfnbuff;
00049 char            *rfnbuff;
00050 char            *pfn2buff;
00051 char            *rfn2buff;
00052 mode_t           Mode;      // $FMODE or $PRTY
00053 int              Oflag;     // $OFLAG
00054 char             mbuff[12];
00055 char             obuff[4];
00056 
00057              XrdOucMsubsInfo(const char *tid, XrdOucEnv *envP, 
00058                              XrdOucName2Name *n2np,
00059                              const char *lfnP, const char *lfn2P,
00060                              mode_t mode=0,    int ofl=0,
00061                              const char *Opts=0, const char *ridP=0,
00062                              const char *pfnP=0, const char *pfn2P=0)
00063                             : Tid(tid), Env(envP), N2N(n2np),
00064                               lfn(lfnP), lfn2(lfn2P), pfn(pfnP), pfn2(pfn2P),
00065                               misc(Opts), Rid(ridP), Mode(mode), Oflag(ofl)
00066                               {pfnbuff = rfnbuff = pfn2buff = rfn2buff = 0;}
00067             ~XrdOucMsubsInfo(){if (pfnbuff ) free(pfnbuff);
00068                                if (rfnbuff ) free(rfnbuff);
00069                                if (pfn2buff) free(pfn2buff);
00070                                if (rfn2buff) free(rfn2buff);
00071                               }
00072 };
00073   
00074 class XrdOucMsubs
00075 {
00076 public:
00077 
00078 static const int maxElem = 32;
00079 
00080 int   Parse(const char *oname, char *msg);
00081 
00082 int   Subs(XrdOucMsubsInfo &Info, char **Data, int *Dlen);
00083 
00084       XrdOucMsubs(XrdSysError *errp);
00085      ~XrdOucMsubs();
00086 
00087 private:
00088 char *getVal(XrdOucMsubsInfo &Info, int vNum);
00089 
00090 enum vNum {vLFN =  1, vPFN =  2, vRFN =  3, vLFN2 =  4, vPFN2 =  5, vRFN2 =  6,
00091            vFM  =  7, vOFL =  8, vUSR =  9, vHST  = 10, vTID  = 11,
00092            vNFY = 12, vOPT = 13, vPTY = 14, vRID  = 15, vCGI  = 16,
00093            vMDP = 17, vSRC = 18, vDST = 19, vCID  = 20, vINS  = 21};
00094 
00095 static const int   vMax = 22;
00096 static const char *vName[vMax];
00097 
00098 XrdSysError *eDest;
00099 char        *mText;
00100 char        *mData[maxElem+1];
00101 int          mDlen[maxElem+1];
00102 int          numElem;
00103 };
00104 #endif

Generated on Tue Jul 5 14:46:50 2011 for ROOT_528-00b_version by  doxygen 1.5.1