1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
#ifndef FWCore_ServiceRegistry_StreamContext_h
#define FWCore_ServiceRegistry_StreamContext_h
/**\class edm::StreamContext
Description: Holds pointer to ProcessContext, StreamID,
transition, EventID and timestamp.
This is intended primarily to be passed to Services
as an argument to their callback functions. It is also
used internally by the Framework to hold information
that can be added to exception messages about the
context where an exception was thrown.
*/
//
// Original Author: W. David Dagenhart
// Created: 7/8/2013
#include "DataFormats/Provenance/interface/EventID.h"
#include "DataFormats/Provenance/interface/Timestamp.h"
#include "FWCore/Utilities/interface/LuminosityBlockIndex.h"
#include "FWCore/Utilities/interface/RunIndex.h"
#include "FWCore/Utilities/interface/StreamID.h"
#include <iosfwd>
#include <string_view>
namespace edm {
class ProcessContext;
class StreamContext {
public:
enum class Transition {
kBeginStream,
kBeginRun,
kBeginLuminosityBlock,
kEvent,
kEndLuminosityBlock,
kEndRun,
kEndStream,
kInvalid
};
StreamContext(StreamID const& streamID, ProcessContext const* processContext);
StreamContext(StreamID const& streamID,
Transition transition,
EventID const& eventID,
RunIndex const& runIndex,
LuminosityBlockIndex const& luminosityBlockIndex,
Timestamp const& timestamp,
ProcessContext const* processContext);
StreamID const& streamID() const { return streamID_; }
Transition transition() const { return transition_; }
bool isAtEndTransition() const {
return transition() == Transition::kEndLuminosityBlock or transition() == Transition::kEndRun;
}
EventID const& eventID() const { return eventID_; } // event#==0 is a lumi, event#==0&lumi#==0 is a run
RunIndex const& runIndex() const { return runIndex_; }
LuminosityBlockIndex const& luminosityBlockIndex() const { return luminosityBlockIndex_; }
Timestamp const& timestamp() const { return timestamp_; }
ProcessContext const* processContext() const { return processContext_; }
void setTransition(Transition v) { transition_ = v; }
void setEventID(EventID const& v) { eventID_ = v; }
void setRunIndex(RunIndex const& v) { runIndex_ = v; }
void setLuminosityBlockIndex(LuminosityBlockIndex const& v) { luminosityBlockIndex_ = v; }
void setTimestamp(Timestamp const& v) { timestamp_ = v; }
private:
StreamID streamID_;
Transition transition_;
EventID eventID_; // event#==0 is a lumi, event#==0&lumi#==0 is a run
RunIndex runIndex_;
LuminosityBlockIndex luminosityBlockIndex_;
Timestamp timestamp_;
ProcessContext const* processContext_;
};
void exceptionContext(std::ostream&, StreamContext const&);
std::ostream& operator<<(std::ostream&, StreamContext const&);
std::string_view transitionName(StreamContext::Transition);
} // namespace edm
#endif
|