Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework
master (f31105fd)
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Typedefs
a
b
c
d
e
f
h
i
l
m
o
p
r
s
t
u
v
w
x
Enumerations
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerations
a
c
d
e
f
i
l
m
n
o
p
q
r
s
t
v
Enumerator
a
b
c
d
e
f
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Properties
Related Functions
:
a
b
c
d
e
g
h
i
m
o
p
r
s
t
v
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
_
b
c
e
f
g
h
i
l
m
n
o
p
r
s
t
u
z
Variables
a
b
c
d
e
g
h
i
m
o
p
q
r
s
t
v
x
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
w
Enumerations
Enumerator
c
e
f
p
u
v
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
AlgsExecutionStates.cpp
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3
* *
4
* This software is distributed under the terms of the Apache version 2 licence, *
5
* copied verbatim in the file "LICENSE". *
6
* *
7
* In applying this licence, CERN does not waive the privileges and immunities *
8
* granted to it by virtue of its status as an Intergovernmental Organization *
9
* or submit itself to any jurisdiction. *
10
\***********************************************************************************/
11
#include "
AlgsExecutionStates.h
"
12
13
#include <cstdint>
14
15
namespace
{
16
constexpr
auto
transition(
AlgsExecutionStates::State
first,
AlgsExecutionStates::State
second
) {
17
static_assert(
sizeof
(
AlgsExecutionStates::State
) == 1,
"no more than 255 states please!"
);
18
using
ui16 = uint_fast16_t;
19
return
static_cast<
ui16
>
( first ) * 256 +
static_cast<
ui16
>
(
second
);
20
}
21
}
// namespace
22
23
StatusCode
AlgsExecutionStates::set
(
unsigned
int
iAlgo,
State
newState ) {
24
if
( iAlgo >=
m_states
.
size
() ) {
25
log
() <<
MSG::ERROR
<<
"Index out of bound ("
<< iAlgo <<
" / "
<<
m_states
.
size
() <<
")"
<<
endmsg
;
26
return
StatusCode::FAILURE
;
27
}
28
29
State
oldState =
m_states
[iAlgo];
30
31
// Allow cycling of a single state
32
if
( oldState == newState )
return
StatusCode::SUCCESS
;
33
34
switch
( transition( oldState, newState ) ) {
35
case
transition(
INITIAL
,
CONTROLREADY
):
36
[[fallthrough]];
37
case
transition(
CONTROLREADY
,
DATAREADY
):
38
[[fallthrough]];
39
case
transition(
DATAREADY
,
SCHEDULED
):
40
[[fallthrough]];
41
case
transition(
DATAREADY
,
RESOURCELESS
):
42
[[fallthrough]];
43
case
transition(
RESOURCELESS
,
SCHEDULED
):
44
[[fallthrough]];
45
case
transition(
SCHEDULED
,
ERROR
):
46
[[fallthrough]];
47
case
transition(
SCHEDULED
,
EVTACCEPTED
):
48
[[fallthrough]];
49
case
transition(
SCHEDULED
,
EVTREJECTED
):
50
m_states
[iAlgo] = newState;
51
m_algsInState
[oldState].
erase
( iAlgo );
52
m_algsInState
[newState].
insert
( iAlgo );
53
return
StatusCode::SUCCESS
;
54
default
:
55
log
() <<
MSG::ERROR
<<
"[AlgIndex "
<< iAlgo <<
"] Transition from "
<<
m_states
[iAlgo] <<
" to "
<< newState
56
<<
" is not allowed"
<<
endmsg
;
57
m_states
[iAlgo] =
ERROR
;
58
m_algsInState
[oldState].
erase
( iAlgo );
59
m_algsInState
[
ERROR
].
insert
( iAlgo );
60
return
StatusCode::FAILURE
;
61
}
62
}
AlgsExecutionStates::m_algsInState
std::vector< boost::container::flat_set< int > > m_algsInState
Definition:
AlgsExecutionStates.h:93
std::vector::size
T size(T... args)
Gaudi::Units::second
constexpr double second
Definition:
SystemOfUnits.h:139
AlgsExecutionStates::CONTROLREADY
@ CONTROLREADY
Definition:
AlgsExecutionStates.h:44
AlgsExecutionStates.h
AlgsExecutionStates::RESOURCELESS
@ RESOURCELESS
Definition:
AlgsExecutionStates.h:46
AlgsExecutionStates::log
MsgStream log()
Definition:
AlgsExecutionStates.h:96
AlgsExecutionStates::ERROR
@ ERROR
Definition:
AlgsExecutionStates.h:50
StatusCode
Definition:
StatusCode.h:65
AlgsExecutionStates::m_states
std::vector< State > m_states
Definition:
AlgsExecutionStates.h:92
AlgsExecutionStates::SCHEDULED
@ SCHEDULED
Definition:
AlgsExecutionStates.h:47
std::vector::erase
T erase(T... args)
AlgsExecutionStates::EVTREJECTED
@ EVTREJECTED
Definition:
AlgsExecutionStates.h:49
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition:
MsgStream.h:202
AlgsExecutionStates::set
StatusCode set(unsigned int iAlgo, State newState)
Definition:
AlgsExecutionStates.cpp:23
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition:
StatusCode.h:100
std::vector::insert
T insert(T... args)
MSG::ERROR
@ ERROR
Definition:
IMessageSvc.h:25
AlgsExecutionStates::DATAREADY
@ DATAREADY
Definition:
AlgsExecutionStates.h:45
AlgsExecutionStates::State
State
Execution states of the algorithms Must have contiguous integer values 0, 1...
Definition:
AlgsExecutionStates.h:42
AlgsExecutionStates::EVTACCEPTED
@ EVTACCEPTED
Definition:
AlgsExecutionStates.h:48
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition:
StatusCode.h:101
AlgsExecutionStates::INITIAL
@ INITIAL
Definition:
AlgsExecutionStates.h:43
GaudiHive
src
AlgsExecutionStates.cpp
Generated on Mon Apr 7 2025 16:26:21 for The Gaudi Framework by
1.8.18