00001 #ifndef __XRDSSISTREAM_HH__ 00002 #define __XRDSSISTREAM_HH__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d S s i S t r e a m . h h */ 00006 /* */ 00007 /* (c) 2013 by the Board of Trustees of the Leland Stanford, Jr., University */ 00008 /* Produced by Andrew Hanushevsky for Stanford University under contract */ 00009 /* DE-AC02-76-SFO0515 with the Department of Energy */ 00010 /* */ 00011 /* This file is part of the XRootD software suite. */ 00012 /* */ 00013 /* XRootD is free software: you can redistribute it and/or modify it under */ 00014 /* the terms of the GNU Lesser General Public License as published by the */ 00015 /* Free Software Foundation, either version 3 of the License, or (at your */ 00016 /* option) any later version. */ 00017 /* */ 00018 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */ 00019 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ 00020 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */ 00021 /* License for more details. */ 00022 /* */ 00023 /* You should have received a copy of the GNU Lesser General Public License */ 00024 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */ 00025 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */ 00026 /* */ 00027 /* The copyright holder's institutional names and contributor's names may not */ 00028 /* be used to endorse or promote products derived from this software without */ 00029 /* specific prior written permission of the institution or contributor. */ 00030 /******************************************************************************/ 00031 00032 #include <errno.h> 00033 00034 #include "XrdSsi/XrdSsiErrInfo.hh" 00035 00036 //----------------------------------------------------------------------------- 00051 //----------------------------------------------------------------------------- 00052 00053 class XrdSsiStream 00054 { 00055 public: 00056 00057 //----------------------------------------------------------------------------- 00061 //----------------------------------------------------------------------------- 00062 00063 class Buffer 00064 { 00065 public: 00066 virtual void Recycle() = 0; 00067 00068 char *data; 00069 Buffer *next; 00070 00071 Buffer(char *dp=0) : data(dp), next(0) {} 00072 virtual ~Buffer() {} 00073 }; 00074 00075 //----------------------------------------------------------------------------- 00091 //----------------------------------------------------------------------------- 00092 00093 virtual Buffer *GetBuff(XrdSsiErrInfo &eRef, int &dlen, bool &last) 00094 {eRef.Set("Not an active stream", EOPNOTSUPP); return 0;} 00095 00096 //----------------------------------------------------------------------------- 00110 //----------------------------------------------------------------------------- 00111 00112 virtual bool SetBuff(XrdSsiErrInfo &eRef, char *buff, int blen) 00113 {eRef.Set("Not a passive stream", EOPNOTSUPP); return false;} 00114 00115 //----------------------------------------------------------------------------- 00129 //----------------------------------------------------------------------------- 00130 00131 virtual int SetBuff(XrdSsiErrInfo &eRef, char *buff, int blen, bool &last) 00132 {eRef.Set("Not a passive stream", EOPNOTSUPP); return 0;} 00133 00134 //----------------------------------------------------------------------------- 00142 //----------------------------------------------------------------------------- 00143 00144 enum StreamType {isActive = 0, isPassive}; 00145 00146 //----------------------------------------------------------------------------- 00150 //----------------------------------------------------------------------------- 00151 00152 StreamType Type() {return SType;} 00153 00154 XrdSsiStream(StreamType stype) : SType(stype) {} 00155 00156 virtual ~XrdSsiStream() {} 00157 00158 protected: 00159 00160 const StreamType SType; 00161 }; 00162 #endif