00001 #ifndef __XRDSSIPROVIDER_HH__ 00002 #define __XRDSSIPROVIDER_HH__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d S s i P r o v i d e r . h h */ 00006 /* */ 00007 /* (c) 2015 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 //----------------------------------------------------------------------------- 00077 //----------------------------------------------------------------------------- 00078 00079 #include <errno.h> 00080 00081 #include "XrdSsi/XrdSsiErrInfo.hh" 00082 #include "XrdSsi/XrdSsiResource.hh" 00083 00084 class XrdSsiCluster; 00085 class XrdSsiLogger; 00086 class XrdSsiService; 00087 00088 class XrdSsiProvider 00089 { 00090 public: 00091 00092 //----------------------------------------------------------------------------- 00108 //----------------------------------------------------------------------------- 00109 00110 virtual 00111 XrdSsiService *GetService(XrdSsiErrInfo &eInfo, 00112 const std::string &contact, 00113 int oHold=256 00114 ) {eInfo.Set("Service not implemented!", ENOTSUP); 00115 return 0; 00116 } 00117 00118 //----------------------------------------------------------------------------- 00122 //----------------------------------------------------------------------------- 00123 00124 static const int SsiVersion = 0x00010000; 00125 00126 int GetVersion() {return SsiVersion;} 00127 00128 //----------------------------------------------------------------------------- 00147 //----------------------------------------------------------------------------- 00148 00149 virtual bool Init(XrdSsiLogger *logP, 00150 XrdSsiCluster *clsP, 00151 std::string cfgFn, 00152 std::string parms, 00153 int argc, 00154 char **argv 00155 ) = 0; 00156 00157 //----------------------------------------------------------------------------- 00178 //----------------------------------------------------------------------------- 00179 00180 enum rStat {notPresent = 0, isPresent, isPending}; 00181 00182 virtual rStat QueryResource(const char *rName, 00183 const char *contact=0 00184 ) = 0; 00185 00186 //----------------------------------------------------------------------------- 00193 //----------------------------------------------------------------------------- 00194 00195 virtual void ResourceAdded(const char *rName) {} 00196 00197 //----------------------------------------------------------------------------- 00204 //----------------------------------------------------------------------------- 00205 00206 virtual void ResourceRemoved(const char *rName) {} 00207 00208 //----------------------------------------------------------------------------- 00221 //----------------------------------------------------------------------------- 00222 00223 virtual void SetCBThreads(int cbNum, int ntNum=0) {(void)cbNum; (void)ntNum;} 00224 00225 //----------------------------------------------------------------------------- 00230 //----------------------------------------------------------------------------- 00231 00232 enum tmoType {connect_N=0, 00233 connect_T, 00234 idleClose, 00235 request_T, 00236 response_T, 00237 stream_T 00238 }; 00239 00240 virtual void SetTimeout(tmoType what, int tmoval) {(void)what; (void)tmoval;} 00241 00242 //----------------------------------------------------------------------------- 00244 //----------------------------------------------------------------------------- 00245 00246 XrdSsiProvider() {} 00247 protected: 00248 00249 //----------------------------------------------------------------------------- 00251 //----------------------------------------------------------------------------- 00252 00253 virtual ~XrdSsiProvider() {} 00254 }; 00255 #endif