xrootd
Main Page
Namespaces
Classes
Files
File List
File Members
src
XrdCms
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
XrdNetBuffer
;
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,
XrdNetBuffer
*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
Generated by
1.8.3.1