xrootd
Loading...
Searching...
No Matches
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
41class XrdSsiStream;
42
44 {union {const char *buff;
46 const char *eMsg;
47 long long fsize;
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{
88public:
89
90//-----------------------------------------------------------------------------
97//-----------------------------------------------------------------------------
98
99inline char *GetMsg(int &mlen) {mlen = msgLen; return msgBuf;}
100
101//-----------------------------------------------------------------------------
106//-----------------------------------------------------------------------------
107
108virtual void RecycleMsg(bool sent=true) = 0;
109
110//-----------------------------------------------------------------------------
115//-----------------------------------------------------------------------------
116
117 XrdSsiRespInfoMsg(char *msgP, int mlen)
118 : msgBuf(msgP), msgLen(mlen) {}
119
120protected:
121
122//-----------------------------------------------------------------------------
124//-----------------------------------------------------------------------------
125
127
128char *msgBuf;
130};
131#endif
Definition XrdSsiRespInfo.hh:87
char * GetMsg(int &mlen)
Definition XrdSsiRespInfo.hh:99
int msgLen
Definition XrdSsiRespInfo.hh:129
char * msgBuf
Definition XrdSsiRespInfo.hh:128
virtual ~XrdSsiRespInfoMsg()
Destructor. This object may not be deleted. Use Recycle() instead.
Definition XrdSsiRespInfo.hh:126
virtual void RecycleMsg(bool sent=true)=0
XrdSsiRespInfoMsg(char *msgP, int mlen)
Definition XrdSsiRespInfo.hh:117
Definition XrdSsiStream.hh:54
Definition XrdSsiRespInfo.hh:44
Resp_t
Definition XrdSsiRespInfo.hh:58
@ isHandle
Definition XrdSsiRespInfo.hh:58
@ isNone
Definition XrdSsiRespInfo.hh:58
@ isFile
Definition XrdSsiRespInfo.hh:58
@ isError
Definition XrdSsiRespInfo.hh:58
@ isStream
Definition XrdSsiRespInfo.hh:58
@ isData
Definition XrdSsiRespInfo.hh:58
const char * buff
Definition XrdSsiRespInfo.hh:44
int eNum
errno When rType == isError
Definition XrdSsiRespInfo.hh:52
void Init()
Definition XrdSsiRespInfo.hh:61
long long fsize
->file size when rType == isFile
Definition XrdSsiRespInfo.hh:47
const char * State() const
Definition XrdSsiRespInfo.hh:63
XrdSsiRespInfo()
Definition XrdSsiRespInfo.hh:72
Resp_t rType
Definition XrdSsiRespInfo.hh:59
XrdSsiStream * strmP
->SsiStream when rType == isStream
Definition XrdSsiRespInfo.hh:48
int fdnum
filedesc When rType == isFile
Definition XrdSsiRespInfo.hh:53
int mdlen
Metadata length.
Definition XrdSsiRespInfo.hh:55
const char * eMsg
->msg text when rType == isError
Definition XrdSsiRespInfo.hh:46
int blen
Definition XrdSsiRespInfo.hh:50
const char * mdata
-> Metadata about response.
Definition XrdSsiRespInfo.hh:56
~XrdSsiRespInfo()
Definition XrdSsiRespInfo.hh:73