12 #ifndef ROOT_XrdProofdProtocol    13 #define ROOT_XrdProofdProtocol    35 #define XPROOFD_VERSBIN 0x000003EF    36 #define XPROOFD_VERSION "0.7"    40 #include "Xrd/XrdLink.hh"    41 #include "Xrd/XrdProtocol.hh"    42 #include "XrdOuc/XrdOucString.hh"    43 #include "XrdSec/XrdSecInterface.hh"    61    XrdProtocol  *
Match(XrdLink *lp);
    63    void          Recycle(XrdLink *lp, 
int x, 
const char *
y);
    64    int           Stats(
char *buff, 
int blen, 
int do_sync);
    66    static int    Configure(
char *parms, XrdProtocol_Config *
pi);
    69    int           GetData(
const char *dtype, 
char *buff, 
int blen);
    70    static XrdBuffer *
GetBuff(
int quantum, XrdBuffer *argp = 0);
    75    inline kXR_int32 
CID()
 const { 
return fCID; }
   127    int           StartRootd(XrdLink *lp, XrdOucString &emsg);
   194    static void                   PostSession(
int on, 
const char *u, 
const char *
g,
   198 #define XPD_SETRESP(p, x) \   200    memcpy((void *)&rid, (const void *)&(p->Request()->header.streamid[0]), 2); \   201    XrdProofdResponse *response = p->Response(rid); \   203       TRACEP(p, XERR, x << ": could not get Response instance for requid:"<< rid); \   207 #define XPD_SETRESPV(p, x) \   209    memcpy((void *)&rid, (const void *)&(p->Request()->header.streamid[0]), 2); \   210    XrdProofdResponse *response = p->Response(rid); \   212       TRACEP(p, XERR, x << ": could not get Response instance for requid:"<< rid); \   216 #define XPD_CLNT_VERSION_OK(p,v) (v < 0 || (p && p->ProofProtocol() >= v)) 
static void PostSession(int on, const char *u, const char *g, XrdProofdProofServ *xps)
Post change of session status. 
 
static XpdObjectQ fgProtStack
 
static constexpr double pi
 
static XrdSysLogger * fgLogger
 
XrdSecEntity * fSecClient
 
XrdProtocol * Match(XrdLink *lp)
Check whether the request matches this protocol. 
 
virtual ~XrdProofdProtocol()
 
void SetAuthProt(XrdSecProtocol *p)
 
static XrdSysError fgEDest
 
void SetAdminPath(const char *p)
 
static XrdSysRecMutex fgBMutex
 
short int ProofProtocol() const
 
static XrdBuffer * GetBuff(int quantum, XrdBuffer *argp=0)
Allocate a buffer to handle quantum bytes; if argp points to an existing buffer, its size is checked ...
 
XrdSecProtocol * AuthProt() const
 
void SetCID(kXR_int32 cid)
 
static int Configure(char *parms, XrdProtocol_Config *pi)
Protocol configuration tool Function: Establish configuration at load time. 
 
void SetUserIn(const char *uin)
 
static XrdBuffManager * fgBPool
 
static XrdProofdManager * fgMgr
 
std::vector< XrdProofdResponse * > fResponses
 
void Reset()
Reset static and local vars. 
 
static int EUidAtStartup()
 
XrdProofdClient * fPClient
 
XrdSecProtocol * fAuthProt
 
unsigned char fClntCapVer
 
XrdProofdResponse * Response(kXR_unt16 rid)
Get response instance corresponding to stream ID 'sid'. 
 
#define XrdSysMutexHelper
 
void Recycle(XrdLink *lp, int x, const char *y)
Recycle call. Release the instance and give it back to the stack. 
 
void SetProofProtocol(short int pp)
 
void SetClntCapVer(unsigned char c)
 
const char * TraceID() const
 
void SetAuthEntity(XrdSecEntity *se=0)
 
int GetData(const char *dtype, char *buff, int blen)
Get data from the open link. 
 
const char * UserIn() const
 
XrdProofdProtocol(XrdProtocol_Config *pi=0)
Protocol constructor. 
 
void SetClient(XrdProofdClient *c)
 
void TouchAdminPath()
Recording time of the last request on this instance. 
 
int Process2()
Local processing method: here the request is dispatched to the appropriate method. 
 
void SetSuperUser(bool su=1)
 
XrdSysRecMutex fCtrlcMutex
 
XrdProofdResponse * GetNewResponse(kXR_unt16 rid)
Create new response instance for stream ID 'sid'. 
 
static constexpr double s
 
int Ping()
Handle a ping request. 
 
static int fgEUidAtStartup
 
int Process(XrdLink *lp)
Process the information received on the active link. 
 
int StartRootd(XrdLink *lp, XrdOucString &emsg)
Transfer the connection to a rootd daemon to serve a file access request Return 0 on success...
 
int Urgent()
Handle generic request of a urgent message to be forwarded to the server. 
 
static void ReleaseBuff(XrdBuffer *argp)
Release a buffer previously allocated via GetBuff. 
 
const char * GroupIn() const
 
int Stats(char *buff, int blen, int do_sync)
Return statistics info about the protocol. 
 
int Interrupt()
Handle an interrupt request. 
 
int SendDataN(XrdProofdProofServ *xps, XrdSrvBuffer **buf=0, bool sb=0)
Send data over the open client links of session 'xps'. 
 
XrdProofdClient * Client() const
 
int SendMsg()
Handle a request to forward a message to another process. 
 
static XrdProofdManager * Mgr()
 
int CtrlC()
Set and propagate a Ctrl-C request. 
 
int SendData(XrdProofdProofServ *xps, kXR_int32 sid=-1, XrdSrvBuffer **buf=0, bool sb=0)
Send data over the open link. Segmentation is done here, if required. 
 
XPClientRequest * Request() const
 
void SetGroupIn(const char *gin)
 
static constexpr double g