File indexing completed on 2023-10-25 09:47:51
0001 #ifndef FWCore_ServiceRegistry_StreamContext_h
0002 #define FWCore_ServiceRegistry_StreamContext_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #include "DataFormats/Provenance/interface/EventID.h"
0020 #include "DataFormats/Provenance/interface/Timestamp.h"
0021 #include "FWCore/Utilities/interface/LuminosityBlockIndex.h"
0022 #include "FWCore/Utilities/interface/RunIndex.h"
0023 #include "FWCore/Utilities/interface/StreamID.h"
0024
0025 #include <iosfwd>
0026 #include <string_view>
0027
0028 namespace edm {
0029
0030 class ProcessContext;
0031
0032 class StreamContext {
0033 public:
0034 enum class Transition {
0035 kBeginStream,
0036 kBeginRun,
0037 kBeginLuminosityBlock,
0038 kEvent,
0039 kEndLuminosityBlock,
0040 kEndRun,
0041 kEndStream,
0042 kInvalid
0043 };
0044
0045 StreamContext(StreamID const& streamID, ProcessContext const* processContext);
0046
0047 StreamContext(StreamID const& streamID,
0048 Transition transition,
0049 EventID const& eventID,
0050 RunIndex const& runIndex,
0051 LuminosityBlockIndex const& luminosityBlockIndex,
0052 Timestamp const& timestamp,
0053 ProcessContext const* processContext);
0054
0055 StreamID const& streamID() const { return streamID_; }
0056 Transition transition() const { return transition_; }
0057 bool isAtEndTransition() const {
0058 return transition() == Transition::kEndLuminosityBlock or transition() == Transition::kEndRun;
0059 }
0060 EventID const& eventID() const { return eventID_; }
0061 RunIndex const& runIndex() const { return runIndex_; }
0062 LuminosityBlockIndex const& luminosityBlockIndex() const { return luminosityBlockIndex_; }
0063 Timestamp const& timestamp() const { return timestamp_; }
0064 ProcessContext const* processContext() const { return processContext_; }
0065
0066 void setTransition(Transition v) { transition_ = v; }
0067 void setEventID(EventID const& v) { eventID_ = v; }
0068 void setRunIndex(RunIndex const& v) { runIndex_ = v; }
0069 void setLuminosityBlockIndex(LuminosityBlockIndex const& v) { luminosityBlockIndex_ = v; }
0070 void setTimestamp(Timestamp const& v) { timestamp_ = v; }
0071
0072 private:
0073 StreamID streamID_;
0074 Transition transition_;
0075 EventID eventID_;
0076 RunIndex runIndex_;
0077 LuminosityBlockIndex luminosityBlockIndex_;
0078 Timestamp timestamp_;
0079 ProcessContext const* processContext_;
0080 };
0081
0082 void exceptionContext(std::ostream&, StreamContext const&);
0083 std::ostream& operator<<(std::ostream&, StreamContext const&);
0084
0085 std::string_view transitionName(StreamContext::Transition);
0086 }
0087 #endif