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 //----------------------------------------------------------------------------- 00103 //----------------------------------------------------------------------------- 00104 00105 enum CTL_Cmd {CTL_None = 0}; 00106 00107 virtual int Control(CTL_Cmd cmd, const void *argP, void *&resP) 00108 {(void)cmd; (void)argP; (void)resP; 00109 return (cmd == CTL_None ? 0 : -ENOTSUP); 00110 } 00111 00112 //----------------------------------------------------------------------------- 00128 //----------------------------------------------------------------------------- 00129 00130 virtual 00131 XrdSsiService *GetService(XrdSsiErrInfo &eInfo, 00132 const std::string &contact, 00133 int oHold=256 00134 ) {eInfo.Set("Service not implemented!", ENOTSUP); 00135 return 0; 00136 } 00137 00138 //----------------------------------------------------------------------------- 00142 //----------------------------------------------------------------------------- 00143 00144 static const int SsiVersion = 0x00010000; 00145 00146 int GetVersion() {return SsiVersion;} 00147 00148 //----------------------------------------------------------------------------- 00167 //----------------------------------------------------------------------------- 00168 00169 virtual bool Init(XrdSsiLogger *logP, 00170 XrdSsiCluster *clsP, 00171 std::string cfgFn, 00172 std::string parms, 00173 int argc, 00174 char **argv 00175 ) = 0; 00176 00177 //----------------------------------------------------------------------------- 00198 //----------------------------------------------------------------------------- 00199 00200 enum rStat {notPresent = 0, isPresent, isPending}; 00201 00202 virtual rStat QueryResource(const char *rName, 00203 const char *contact=0 00204 ) = 0; 00205 00206 //----------------------------------------------------------------------------- 00213 //----------------------------------------------------------------------------- 00214 00215 virtual void ResourceAdded(const char *rName) {} 00216 00217 //----------------------------------------------------------------------------- 00224 //----------------------------------------------------------------------------- 00225 00226 virtual void ResourceRemoved(const char *rName) {} 00227 00228 //----------------------------------------------------------------------------- 00234 //----------------------------------------------------------------------------- 00235 00236 virtual void SetCBThreads(int cbNum, int ntNum=0) {(void)cbNum; (void)ntNum;} 00237 00238 //----------------------------------------------------------------------------- 00249 //----------------------------------------------------------------------------- 00250 00267 virtual bool SetConfig(XrdSsiErrInfo &eInfo, 00268 std::string &optname, 00269 int optvalue) 00270 {(void)optname; (void)optvalue; return 0;} 00271 00272 //----------------------------------------------------------------------------- 00278 //----------------------------------------------------------------------------- 00279 00280 virtual void SetSpread(short ssz) {(void)ssz;} 00281 00282 //----------------------------------------------------------------------------- 00287 //----------------------------------------------------------------------------- 00288 00289 enum tmoType {connect_N=0, 00290 connect_T, 00291 idleClose, 00292 request_T, 00293 response_T, 00294 stream_T 00295 }; 00296 00297 virtual void SetTimeout(tmoType what, int tmoval) {(void)what; (void)tmoval;} 00298 00299 //----------------------------------------------------------------------------- 00301 //----------------------------------------------------------------------------- 00302 00303 XrdSsiProvider() {} 00304 protected: 00305 00306 //----------------------------------------------------------------------------- 00308 //----------------------------------------------------------------------------- 00309 00310 virtual ~XrdSsiProvider() {} 00311 }; 00312 #endif