XRootD
Loading...
Searching...
No Matches
XrdCmsSelect.hh
Go to the documentation of this file.
1
#ifndef __CMS_SELECT_HH
2
#define __CMS_SELECT_HH
3
/******************************************************************************/
4
/* */
5
/* X r d C m s S e l e c t . 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 <netinet/in.h>
34
35
#include "
XrdCms/XrdCmsKey.hh
"
36
37
/******************************************************************************/
38
/* C l a s s X r d C m s S e l e c t */
39
/******************************************************************************/
40
41
class
XrdCmsRRQInfo
;
42
43
class
XrdCmsSelect
44
{
45
public
:
46
XrdCmsKey
Path
;
// In: Path to select or lookup in the cache
47
XrdCmsRRQInfo
*
InfoP
;
// In: Fast redirect routing
48
SMask_t
nmask
;
// In: Nodes to avoid
49
SMask_t
smask
;
// Out: Nodes selected
50
struct
iovec *
iovP
;
// In: Prepare notification I/O vector
51
int
iovN
;
// In: Prepare notification I/O vector count
52
int
Opts
;
// In: One or more of the following enums
53
unsigned
int
AltHash
;
// In: Alternate hash for affinity when UseAH set
54
int
Reserved
;
55
56
enum
{
Write
= 0x00010,
// File will be open in write mode (select & cache)
57
NewFile
= 0x00020,
// File will be created may not exist (select)
58
Online
= 0x00040,
// Only consider online files (select & prep)
59
Trunc
= 0x00080,
// File will be truncated (Select only)
60
Create
= 0x000A0,
// Create file, truncate if exists
61
Defer
= 0x00100,
// Do not select a server now (prep only)
62
Peers
= 0x00200,
// Peer clusters may be selected (select only)
63
Refresh
= 0x00400,
// Cache should be refreshed (all)
64
Asap
= 0x00800,
// Respond as soon as possible (locate only)
65
noBind
= 0x01000,
// Do not new bind file to a server (select only)
66
isMeta
= 0x02000,
// Only inode information being changed(select only)
67
Freshen
= 0x04000,
// Freshen access times (prep only)
68
Replica
= 0x08000,
// File will be replicated (w/ Create) (select only)
69
NoTryLim
= 0x10000,
// Do not apply the retry limit
70
MWFiles
= 0x20000,
// Multiwrite files allowed (select only)
71
Advisory
= 0x40000,
// Cache A/D is advisory (no delay) (have & cache)
72
Pending
= 0x80000,
// File being staged (have & cache)
73
ifWant
= 0x0000f,
// XrdNetIF::ifType encoding location
74
75
Pack
= 0x00100000,
// Packed selection
76
UseRef
= 0x00200000,
// Selection by reference count only
77
isDir
= 0x00400000,
// This selection is for a directory
78
UseAH
= 0x08000000
// Use alternate hash for affinity
79
};
80
81
struct
{
SMask_t
wf;
// Out: Writable locations
82
SMask_t
hf;
// Out: Existing locations
83
SMask_t
pf;
// Out: Pending locations
84
SMask_t
bf;
// Out: Bounced locations
85
}
Vec
;
86
87
static
const
int
SelDSZ
= 256;
88
89
struct
{
int
Port;
// Out: Target node port number
90
char
Data[
SelDSZ
];
// Out: Target node or error message
91
int
DLen;
// Out: Length of Data including null byte
92
}
Resp
;
93
94
XrdCmsSelect
(
int
opts
=0,
char
*thePath=0,
int
thePLen=0)
95
:
Path
(thePath,thePLen),
InfoP
(0),
smask
(0),
Opts
(
opts
)
96
{
Resp
.Port = 0; *
Resp
.Data =
'\0'
;
Resp
.DLen = 0;}
97
~XrdCmsSelect
() {}
98
};
99
100
/******************************************************************************/
101
/* C l a s s X r d C m s S e l e c t e d */
102
/******************************************************************************/
103
104
class
XrdCmsSelected
// Argument to List() after select or locate
105
{
106
public
:
107
108
static
const
int
IdentSize
= 264;
109
110
XrdCmsSelected
*
next
;
111
SMask_t
Mask
;
112
int
Id
;
113
int
IdentLen
;
// 12345678901234567890123456
114
char
Ident
[
IdentSize
];
// [::123.123.123.123]:123456
115
int
Port
;
116
int
RefTotW
;
117
int
RefTotR
;
118
int
Shrin
;
// Share intervals used
119
char
Share
;
// Share
120
char
RoleID
;
// Role Identifier
121
char
Rsvd
[2];
122
int
Status
;
// One of the following
123
124
enum
{
Disable
= 0x0001,
125
NoStage
= 0x0002,
126
Offline
= 0x0004,
127
Suspend
= 0x0008,
128
isRW
= 0x0010,
129
isMangr
= 0x0100
130
};
131
132
XrdCmsSelected
(
XrdCmsSelected
*np=0) :
next
(np) {}
133
134
~XrdCmsSelected
() {}
135
};
136
137
/******************************************************************************/
138
/* C l a s s X r d C m s S e l e c t o r */
139
/******************************************************************************/
140
141
class
XrdCmsSelector
142
{
143
public
:
144
const
char
*
reason
;
145
int
delay
;
146
short
nPick
;
147
char
needNet
;
148
char
needSpace
;
149
char
selPack
;
150
bool
xFull
;
151
bool
xNoNet
;
152
bool
xOff
;
153
bool
xOvld
;
154
bool
xSusp
;
155
156
inline
void
Reset
() {
reason
= 0;
delay
= 0;
nPick
= 0;
157
xFull
=
xNoNet
=
xOff
=
xOvld
=
xSusp
=
false
;
158
}
159
};
160
#endif
XrdCmsKey.hh
SMask_t
unsigned long long SMask_t
Definition
XrdCmsTypes.hh:33
opts
struct myOpts opts
XrdCmsKey
Definition
XrdCmsKey.hh:48
XrdCmsRRQInfo
Definition
XrdCmsRRQ.hh:47
XrdCmsSelect
Definition
XrdCmsSelect.hh:44
XrdCmsSelect::ifWant
@ ifWant
Definition
XrdCmsSelect.hh:73
XrdCmsSelect::Pack
@ Pack
Definition
XrdCmsSelect.hh:75
XrdCmsSelect::noBind
@ noBind
Definition
XrdCmsSelect.hh:65
XrdCmsSelect::isDir
@ isDir
Definition
XrdCmsSelect.hh:77
XrdCmsSelect::Refresh
@ Refresh
Definition
XrdCmsSelect.hh:63
XrdCmsSelect::Write
@ Write
Definition
XrdCmsSelect.hh:56
XrdCmsSelect::NoTryLim
@ NoTryLim
Definition
XrdCmsSelect.hh:69
XrdCmsSelect::Online
@ Online
Definition
XrdCmsSelect.hh:58
XrdCmsSelect::Defer
@ Defer
Definition
XrdCmsSelect.hh:61
XrdCmsSelect::Asap
@ Asap
Definition
XrdCmsSelect.hh:64
XrdCmsSelect::Advisory
@ Advisory
Definition
XrdCmsSelect.hh:71
XrdCmsSelect::Replica
@ Replica
Definition
XrdCmsSelect.hh:68
XrdCmsSelect::MWFiles
@ MWFiles
Definition
XrdCmsSelect.hh:70
XrdCmsSelect::NewFile
@ NewFile
Definition
XrdCmsSelect.hh:57
XrdCmsSelect::Trunc
@ Trunc
Definition
XrdCmsSelect.hh:59
XrdCmsSelect::Peers
@ Peers
Definition
XrdCmsSelect.hh:62
XrdCmsSelect::Create
@ Create
Definition
XrdCmsSelect.hh:60
XrdCmsSelect::Pending
@ Pending
Definition
XrdCmsSelect.hh:72
XrdCmsSelect::isMeta
@ isMeta
Definition
XrdCmsSelect.hh:66
XrdCmsSelect::UseRef
@ UseRef
Definition
XrdCmsSelect.hh:76
XrdCmsSelect::Freshen
@ Freshen
Definition
XrdCmsSelect.hh:67
XrdCmsSelect::UseAH
@ UseAH
Definition
XrdCmsSelect.hh:78
XrdCmsSelect::smask
SMask_t smask
Definition
XrdCmsSelect.hh:49
XrdCmsSelect::iovP
struct iovec * iovP
Definition
XrdCmsSelect.hh:50
XrdCmsSelect::iovN
int iovN
Definition
XrdCmsSelect.hh:51
XrdCmsSelect::Opts
int Opts
Definition
XrdCmsSelect.hh:52
XrdCmsSelect::Reserved
int Reserved
Definition
XrdCmsSelect.hh:54
XrdCmsSelect::Resp
struct XrdCmsSelect::@93 Resp
XrdCmsSelect::XrdCmsSelect
XrdCmsSelect(int opts=0, char *thePath=0, int thePLen=0)
Definition
XrdCmsSelect.hh:94
XrdCmsSelect::SelDSZ
static const int SelDSZ
Definition
XrdCmsSelect.hh:87
XrdCmsSelect::~XrdCmsSelect
~XrdCmsSelect()
Definition
XrdCmsSelect.hh:97
XrdCmsSelect::Vec
struct XrdCmsSelect::@92 Vec
XrdCmsSelect::InfoP
XrdCmsRRQInfo * InfoP
Definition
XrdCmsSelect.hh:47
XrdCmsSelect::Path
XrdCmsKey Path
Definition
XrdCmsSelect.hh:46
XrdCmsSelect::AltHash
unsigned int AltHash
Definition
XrdCmsSelect.hh:53
XrdCmsSelect::nmask
SMask_t nmask
Definition
XrdCmsSelect.hh:48
XrdCmsSelected
Definition
XrdCmsSelect.hh:105
XrdCmsSelected::Id
int Id
Definition
XrdCmsSelect.hh:112
XrdCmsSelected::IdentLen
int IdentLen
Definition
XrdCmsSelect.hh:113
XrdCmsSelected::~XrdCmsSelected
~XrdCmsSelected()
Definition
XrdCmsSelect.hh:134
XrdCmsSelected::RefTotW
int RefTotW
Definition
XrdCmsSelect.hh:116
XrdCmsSelected::Disable
@ Disable
Definition
XrdCmsSelect.hh:124
XrdCmsSelected::Suspend
@ Suspend
Definition
XrdCmsSelect.hh:127
XrdCmsSelected::NoStage
@ NoStage
Definition
XrdCmsSelect.hh:125
XrdCmsSelected::Offline
@ Offline
Definition
XrdCmsSelect.hh:126
XrdCmsSelected::isMangr
@ isMangr
Definition
XrdCmsSelect.hh:129
XrdCmsSelected::isRW
@ isRW
Definition
XrdCmsSelect.hh:128
XrdCmsSelected::RoleID
char RoleID
Definition
XrdCmsSelect.hh:120
XrdCmsSelected::XrdCmsSelected
XrdCmsSelected(XrdCmsSelected *np=0)
Definition
XrdCmsSelect.hh:132
XrdCmsSelected::Shrin
int Shrin
Definition
XrdCmsSelect.hh:118
XrdCmsSelected::IdentSize
static const int IdentSize
Definition
XrdCmsSelect.hh:108
XrdCmsSelected::Mask
SMask_t Mask
Definition
XrdCmsSelect.hh:111
XrdCmsSelected::Share
char Share
Definition
XrdCmsSelect.hh:119
XrdCmsSelected::Status
int Status
Definition
XrdCmsSelect.hh:122
XrdCmsSelected::Ident
char Ident[IdentSize]
Definition
XrdCmsSelect.hh:114
XrdCmsSelected::next
XrdCmsSelected * next
Definition
XrdCmsSelect.hh:110
XrdCmsSelected::Rsvd
char Rsvd[2]
Definition
XrdCmsSelect.hh:121
XrdCmsSelected::RefTotR
int RefTotR
Definition
XrdCmsSelect.hh:117
XrdCmsSelected::Port
int Port
Definition
XrdCmsSelect.hh:115
XrdCmsSelector
Definition
XrdCmsSelect.hh:142
XrdCmsSelector::Reset
void Reset()
Definition
XrdCmsSelect.hh:156
XrdCmsSelector::needNet
char needNet
Definition
XrdCmsSelect.hh:147
XrdCmsSelector::xOvld
bool xOvld
Definition
XrdCmsSelect.hh:153
XrdCmsSelector::nPick
short nPick
Definition
XrdCmsSelect.hh:146
XrdCmsSelector::selPack
char selPack
Definition
XrdCmsSelect.hh:149
XrdCmsSelector::xNoNet
bool xNoNet
Definition
XrdCmsSelect.hh:151
XrdCmsSelector::needSpace
char needSpace
Definition
XrdCmsSelect.hh:148
XrdCmsSelector::xFull
bool xFull
Definition
XrdCmsSelect.hh:150
XrdCmsSelector::delay
int delay
Definition
XrdCmsSelect.hh:145
XrdCmsSelector::xSusp
bool xSusp
Definition
XrdCmsSelect.hh:154
XrdCmsSelector::xOff
bool xOff
Definition
XrdCmsSelect.hh:152
XrdCmsSelector::reason
const char * reason
Definition
XrdCmsSelect.hh:144
XrdCms
XrdCmsSelect.hh
Generated by
1.10.0