xrootd
XrdXmlMetaLink.hh
Go to the documentation of this file.
1 #ifndef __XRDXMLMETALINK_HH__
2 #define __XRDXMLMETALINK_HH__
3 /******************************************************************************/
4 /* */
5 /* X r d X m l M e t a L i n k . h h */
6 /* */
7 /* (c) 2015 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* Produced by Andrew Hanushevsky for Stanford University under contract */
9 /* DE-AC02-76-SFO0515 with the Department of Energy */
10 /* */
11 /* This file is part of the XRootD software suite. */
12 /* */
13 /* XRootD is free software: you can redistribute it and/or modify it under */
14 /* the terms of the GNU Lesser General Public License as published by the */
15 /* Free Software Foundation, either version 3 of the License, or (at your */
16 /* option) any later version. */
17 /* */
18 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21 /* License for more details. */
22 /* */
23 /* You should have received a copy of the GNU Lesser General Public License */
24 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26 /* */
27 /* The copyright holder's institutional names and contributor's names may not */
28 /* be used to endorse or promote products derived from this software without */
29 /* specific prior written permission of the institution or contributor. */
30 /******************************************************************************/
31 
32 #include <stdlib.h>
33 #include <string.h>
34 
35 #include "XrdOuc/XrdOucFileInfo.hh"
36 #include "XrdXml/XrdXmlReader.hh"
37 
38 //-----------------------------------------------------------------------------
44 //-----------------------------------------------------------------------------
45 
47 {
48 public:
49 
50 //-----------------------------------------------------------------------------
67 //-----------------------------------------------------------------------------
68 
69 XrdOucFileInfo *Convert(const char *fbuff, int blen=0);
70 
71 //-----------------------------------------------------------------------------
92 //-----------------------------------------------------------------------------
93 
94 XrdOucFileInfo **ConvertAll(const char *fbuff, int &count, int blen=0);
95 
96 //-----------------------------------------------------------------------------
101 //-----------------------------------------------------------------------------
102 
103 static void DeleteAll(XrdOucFileInfo **vecp, int vecn);
104 
105 //-----------------------------------------------------------------------------
113 //-----------------------------------------------------------------------------
114 
115 const char *GetStatus(int &ecode) {ecode = eCode; return eText;}
116 
117 //-----------------------------------------------------------------------------
134 //-----------------------------------------------------------------------------
135 
136  XrdXmlMetaLink(const char *protos="root:xroot:",
137  const char *rdprot="xroot:",
138  const char *rdhost=0,
139  const char *encode=0
140  ) : reader(0),
141  fileList(0), lastFile(0), currFile(0),
142  prots(protos ? strdup(protos) : 0),
143  encType(encode ? strdup(encode) : 0),
144  rdProt(rdprot), rdHost(rdhost),
145  fileCnt(0), eCode(0),
146  doAll(false), noUrl(true)
147  {*eText = 0; *tmpFn = 0;}
148 
149 //-----------------------------------------------------------------------------
151 //-----------------------------------------------------------------------------
152 
153  ~XrdXmlMetaLink() {if (prots) free(prots);
154  if (encType) free(encType);
155  }
156 
157 private:
158 bool GetFile(const char *scope);
159 bool GetFileInfo(const char *scope);
160 bool GetGLfn();
161 bool GetHash();
162 void GetRdrError(const char *why);
163 bool GetSize();
164 bool GetUrl();
165 void GetName();
166 bool PutFile(const char *buff, int blen);
167 bool UrlOK(char *url);
168 
173 char *prots;
174 char *encType;
175 const char *rdProt;
176 const char *rdHost;
178 int eCode;
179 bool doAll;
180 bool noUrl;
181 char tmpFn[64];
182 char eText[256];
183 };
184 #endif
Definition: XrdOucFileInfo.hh:45
Definition: XrdXmlReader.hh:40