XRootD
XrdSsiRespInfo.hh
Go to the documentation of this file.
1 #ifndef __XRDSSIRESPINFO_HH__
2 #define __XRDSSIRESPINFO_HH__
3 /******************************************************************************/
4 /* */
5 /* X r d S s i R e s p I n f o . h h */
6 /* */
7 /* (c) 2014 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 //-----------------------------------------------------------------------------
39 //-----------------------------------------------------------------------------
40 
41 class XrdSsiStream;
42 
44  {union {const char *buff;
46  const char *eMsg;
47  long long fsize;
48  XrdSsiStream *strmP;
49  };
50  union { int blen;
52  int eNum;
53  int fdnum;
54  };
55  int mdlen;
56  const char *mdata;
57 
60 
61  inline void Init() {fsize=0; blen=0; mdlen=0; mdata=0; rType=isNone;}
62 
63  const char *State() const {if (rType == isData ) return "isData";
64  if (rType == isError ) return "isError";
65  if (rType == isHandle) return "isHandle";
66  if (rType == isFile ) return "isFile";
67  if (rType == isStream) return "isStream";
68  if (rType == isNone ) return "isNone";
69  return "isUndef";
70  }
71 
74  };
75 
76 /******************************************************************************/
77 /* X r d S s i R e s p M s g */
78 /******************************************************************************/
79 
80 //-----------------------------------------------------------------------------
84 //-----------------------------------------------------------------------------
85 
87 {
88 public:
89 
90 //-----------------------------------------------------------------------------
97 //-----------------------------------------------------------------------------
98 
99 inline char *GetMsg(int &mlen) {mlen = msgLen; return msgBuf;}
100 
101 //-----------------------------------------------------------------------------
106 //-----------------------------------------------------------------------------
107 
108 virtual void RecycleMsg(bool sent=true) = 0;
109 
110 //-----------------------------------------------------------------------------
115 //-----------------------------------------------------------------------------
116 
117  XrdSsiRespInfoMsg(char *msgP, int mlen)
118  : msgBuf(msgP), msgLen(mlen) {}
119 
120 protected:
121 
122 //-----------------------------------------------------------------------------
124 //-----------------------------------------------------------------------------
125 
126 virtual ~XrdSsiRespInfoMsg() {}
127 
128 char *msgBuf;
129 int msgLen;
130 };
131 #endif
#define eMsg(x)
char * GetMsg(int &mlen)
virtual ~XrdSsiRespInfoMsg()
Destructor. This object may not be deleted. Use Recycle() instead.
virtual void RecycleMsg(bool sent=true)=0
XrdSsiRespInfoMsg(char *msgP, int mlen)
const char * State() const
int mdlen
Metadata length.
const char * mdata
-> Metadata about response.