1 #ifndef FWCore_Framework_Callback_h
2 #define FWCore_Framework_Callback_h
23 #include <type_traits>
39 namespace eventsetup {
40 class EventSetupRecordImpl;
43 template <
typename TRecord>
45 void pre(
const TRecord&) {}
46 void post(
const TRecord&) {}
53 = CallbackSimpleDecorator<TRecord>>
77 bool expected =
false;
88 [
this, iRecord, iEventSetupImpl, weakToken,
group](std::exception_ptr
const* iExcept) {
95 [
this,
group, iRecord, iEventSetupImpl, weakToken](std::exception_ptr
const* iExcept) {
100 &((*postMayGetProxies_).front()),
112 [
this,
group, iRecord, iEventSetupImpl, weakToken](std::exception_ptr
const* iExcept) {
120 template <
class DataT>
127 setData<typename type::head_type, typename type::tail_type>(iReturn);
130 template <
class RemainingContainerT,
class DataT,
class ProductsT>
133 if (
nullptr !=
temp) {
136 if constexpr (not std::is_same_v<produce::Null, RemainingContainerT>) {
137 setData<typename RemainingContainerT::head_type, typename RemainingContainerT::tail_type>(iProducts);
155 for (
size_t i = 0;
i !=
n; ++
i) {
173 std::exception_ptr
const* iExcept,
184 producer_->queue().push(*iGroup, [
this, iRecord, iEventSetupImpl, weakToken]() {
186 std::exception_ptr exceptPtr;
191 proxies = &((*postMayGetProxies_).front());
195 rec.setImpl(iRecord,
transitionID(), proxies, iEventSetupImpl, &pc,
true);
200 : record_{iRecord}, context_{iContext} {}
201 ~EndGuard() { record_->activityRegistry()->postESModuleSignal_.emit(record_->key(), context_); }
212 std::ostringstream ost;
215 exceptPtr = std::current_exception();