XRootD
XrdCmsClientMsg.hh
Go to the documentation of this file.
1
#ifndef __CMS_CLIENTMSG__
2
#define __CMS_CLIENTMSG__
3
/******************************************************************************/
4
/* */
5
/* X r d C m s C l i e n t M s g . h h */
6
/* */
7
/* (c) 2007 by the Board of Trustees of the Leland Stanford, Jr., University */
8
/* All Rights Reserved */
9
/* Produced by Andrew Hanushevsky for Stanford University under contract */
10
/* DE-AC02-76-SFO0515 with the Department of Energy */
11
/* */
12
/* This file is part of the XRootD software suite. */
13
/* */
14
/* XRootD is free software: you can redistribute it and/or modify it under */
15
/* the terms of the GNU Lesser General Public License as published by the */
16
/* Free Software Foundation, either version 3 of the License, or (at your */
17
/* option) any later version. */
18
/* */
19
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22
/* License for more details. */
23
/* */
24
/* You should have received a copy of the GNU Lesser General Public License */
25
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27
/* */
28
/* The copyright holder's institutional names and contributor's names may not */
29
/* be used to endorse or promote products derived from this software without */
30
/* specific prior written permission of the institution or contributor. */
31
/******************************************************************************/
32
33
#include "
XProtocol/YProtocol.hh
"
34
35
#include "
XrdSys/XrdSysPthread.hh
"
36
37
class
XrdOucErrInfo
;
38
class
XrdOucBuffer
;
39
40
class
XrdCmsClientMsg
41
{
42
public
:
43
44
static
XrdCmsClientMsg
*
Alloc
(
XrdOucErrInfo
*erp);
45
46
inline
int
getResult
() {
return
Result;}
47
48
inline
int
ID
() {
return
id;}
49
50
static
int
Init
();
51
52
static
int
inQ
() {
return
numinQ;}
53
54
void
Lock
() {Hold.
Lock
();}
55
56
void
Recycle
();
57
58
static
int
Reply
(
const
char
*Man,
XrdCms::CmsRRHdr
&hdr,
XrdOucBuffer
*buff);
59
60
void
UnLock
() {Hold.
UnLock
();}
61
62
int
Wait4Reply
(
int
wtime) {
return
Hold.
Wait
(wtime);}
63
64
XrdCmsClientMsg
() : Hold(0) {next = 0; inwaitq = 0; Resp = 0; Result = 0;}
65
~XrdCmsClientMsg
() {}
66
67
private
:
68
static
const
int
MidMask = 1023;
69
static
const
int
MaxMsgs = 1024;
70
static
const
int
MidIncr = 1024;
71
static
const
int
IncMask = 0x3ffffc00;
72
static
XrdCmsClientMsg
*RemFromWaitQ(
int
msgid);
73
74
static
int
nextid;
75
static
int
numinQ;
76
77
static
XrdCmsClientMsg
*msgTab;
78
static
XrdCmsClientMsg
*nextfree;
79
static
XrdSysMutex
FreeMsgQ;
80
81
XrdCmsClientMsg
*next;
82
XrdSysCondVar
Hold;
83
int
inwaitq;
84
int
id;
85
XrdOucErrInfo
*Resp;
86
int
Result;
87
};
88
#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
XrdSysCondVar::Wait
int Wait()
Definition:
XrdSysPthread.cc:99
XrdSysCondVar::UnLock
void UnLock()
Definition:
XrdSysPthread.hh:94
XrdSysCondVar::Lock
void Lock()
Definition:
XrdSysPthread.hh:82
XrdSysMutex
Definition:
XrdSysPthread.hh:165
XrdCms::CmsRRHdr
Definition:
YProtocol.hh:83
XrdCms
XrdCmsClientMsg.hh
Generated by
1.9.1