Loading...
Searching...
No Matches
XrdCmsClientMsg.hh
Go to the documentation of this file.
#ifndef __CMS_CLIENTMSG__
#define __CMS_CLIENTMSG__
/******************************************************************************/
/* */
/* X r d C m s C l i e n t M s g . h h */
/* */
/* (c) 2007 by the Board of Trustees of the Leland Stanford, Jr., University */
/* All Rights Reserved */
/* Produced by Andrew Hanushevsky for Stanford University under contract */
/* DE-AC02-76-SFO0515 with the Department of Energy */
/* */
/* This file is part of the XRootD software suite. */
/* */
/* XRootD is free software: you can redistribute it and/or modify it under */
/* the terms of the GNU Lesser General Public License as published by the */
/* Free Software Foundation, either version 3 of the License, or (at your */
/* option) any later version. */
/* */
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
/* License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public License */
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
/* */
/* The copyright holder's institutional names and contributor's names may not */
/* be used to endorse or promote products derived from this software without */
/* specific prior written permission of the institution or contributor. */
/******************************************************************************/
#include "XProtocol/YProtocol.hh"
#include "XrdSys/XrdSysPthread.hh"
class XrdOucErrInfo;
class XrdOucBuffer;
class XrdCmsClientMsg
{
public:
static XrdCmsClientMsg *Alloc(XrdOucErrInfo *erp);
inline int getResult() {return Result;}
inline int ID() {return id;}
static int Init();
static int inQ() {return numinQ;}
void Lock() {Hold.Lock();}
void Recycle();
static int Reply(const char *Man,XrdCms::CmsRRHdr &hdr,XrdOucBuffer *buff);
void UnLock() {Hold.UnLock();}
int Wait4Reply(int wtime) {return Hold.Wait(wtime);}
XrdCmsClientMsg() : Hold(0) {next = 0; inwaitq = 0; Resp = 0; Result = 0;}
~XrdCmsClientMsg() {}
private:
static const int MidMask = 1023;
static const int MaxMsgs = 1024;
static const int MidIncr = 1024;
static const int IncMask = 0x3ffffc00;
static XrdCmsClientMsg *RemFromWaitQ(int msgid);
static int nextid;
static int numinQ;
static XrdCmsClientMsg *msgTab;
static XrdCmsClientMsg *nextfree;
static XrdSysMutex FreeMsgQ;
XrdCmsClientMsg *next;
XrdSysCondVar Hold;
int inwaitq;
int id;
XrdOucErrInfo *Resp;
int Result;
};
#endif
XrdSysPthread.hh
YProtocol.hh
XrdCmsClientMsg
Definition XrdCmsClientMsg.hh:41
XrdCmsClientMsg::XrdCmsClientMsg
XrdCmsClientMsg()
Definition XrdCmsClientMsg.hh:64
XrdCmsClientMsg::Alloc
static XrdCmsClientMsg * Alloc(XrdOucErrInfo *erp)
Definition XrdCmsClientMsg.cc:60
XrdCmsClientMsg::Recycle
void Recycle()
Definition XrdCmsClientMsg.cc:118
XrdCmsClientMsg::ID
int ID()
Definition XrdCmsClientMsg.hh:48
XrdCmsClientMsg::Wait4Reply
int Wait4Reply(int wtime)
Definition XrdCmsClientMsg.hh:62
XrdCmsClientMsg::UnLock
void UnLock()
Definition XrdCmsClientMsg.hh:60
XrdCmsClientMsg::getResult
int getResult()
Definition XrdCmsClientMsg.hh:46
XrdCmsClientMsg::~XrdCmsClientMsg
~XrdCmsClientMsg()
Definition XrdCmsClientMsg.hh:65
XrdCmsClientMsg::Lock
void Lock()
Definition XrdCmsClientMsg.hh:54
XrdCmsClientMsg::Init
static int Init()
Definition XrdCmsClientMsg.cc:91
XrdCmsClientMsg::inQ
static int inQ()
Definition XrdCmsClientMsg.hh:52
XrdCmsClientMsg::Reply
static int Reply(const char *Man, XrdCms::CmsRRHdr &hdr, XrdOucBuffer *buff)
Definition XrdCmsClientMsg.cc:142
XrdOucBuffer
Definition XrdOucBuffer.hh:141
XrdOucErrInfo
Definition XrdOucErrInfo.hh:101
XrdSysCondVar
Definition XrdSysPthread.hh:79
XrdSysMutex
Definition XrdSysPthread.hh:165
XrdCms::CmsRRHdr
Definition YProtocol.hh:83