xrootd
Main Page
Namespaces
Classes
Files
File List
File Members
src
XrdCms
XrdCmsManager.hh
Go to the documentation of this file.
1
#ifndef __CMS_MANAGER__H
2
#define __CMS_MANAGER__H
3
/******************************************************************************/
4
/* */
5
/* X r d C m s M a n a g e r . 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 <stdlib.h>
34
#include <string.h>
35
#include <strings.h>
36
37
#include "
XProtocol/YProtocol.hh
"
38
39
#include "
XrdCms/XrdCmsManList.hh
"
40
#include "
XrdCms/XrdCmsTypes.hh
"
41
#include "
XrdSys/XrdSysPthread.hh
"
42
43
class
XrdLink
;
44
class
XrdCmsDrop
;
45
class
XrdCmsNode
;
46
class
XrdCmsServer;
47
48
/******************************************************************************/
49
/* C l a s s X r d C m s M a n a g e r */
50
/******************************************************************************/
51
52
// This a single-instance global class
53
//
54
class
XrdCmsManager
55
{
56
public
:
57
58
static
const
int
MTMax
= 16;
// Maximum number of Managers
59
60
XrdCmsNode
*
Add
(
XrdLink
*lp,
int
Lvl);
61
62
void
Inform
(
const
char
*What,
const
char
*Data,
int
Dlen);
63
void
Inform
(
const
char
*What,
struct
iovec *vP,
int
vN,
int
vT=0);
64
void
Inform
(
XrdCms::CmsReqCode
rCode,
int
rMod,
const
char
*Arg=0,
int
Alen=0);
65
void
Inform
(
XrdCms::CmsRRHdr
&Hdr,
const
char
*Arg=0,
int
Alen=0);
66
67
int
Present
() {
return
MTHi
>= 0;};
68
69
void
Remove
(
XrdCmsNode
*nP,
const
char
*reason=0);
70
71
void
Reset
();
72
73
XrdCmsManager
();
74
~XrdCmsManager
() {}
// This object should never be deleted
75
76
private
:
77
78
XrdSysMutex
MTMutex
;
79
XrdCmsNode
*
MastTab
[
MTMax
];
80
81
int
MTHi
;
82
};
83
84
namespace
XrdCms
85
{
86
extern
XrdCmsManager
Manager
;
87
}
88
#endif
Generated by
1.8.3.1