1 #ifndef FWCore_Framework_Callback_h
2 #define FWCore_Framework_Callback_h
23 #include <type_traits>
37 namespace eventsetup {
38 class EventSetupRecordImpl;
41 template <
typename TRecord>
43 void pre(
const TRecord&) {}
44 void post(
const TRecord&) {}
51 = CallbackSimpleDecorator<TRecord>>
73 bool expected =
false;
80 tbb::task::allocate_root(), [
this, iRecord, iEventSetupImpl,
token](std::exception_ptr
const* iExcept) {
87 tbb::task::allocate_root(),
88 [
this, iRecord, iEventSetupImpl,
token](std::exception_ptr
const* iExcept) {
101 tbb::task::allocate_root(), [
this, iRecord, iEventSetupImpl,
token](std::exception_ptr
const* iExcept) {
109 template <
class DataT>
116 setData<typename type::head_type, typename type::tail_type>(iReturn);
119 template <
class RemainingContainerT,
class DataT,
class ProductsT>
122 if (
nullptr !=
temp) {
125 if constexpr (not std::is_same_v<produce::Null, RemainingContainerT>) {
126 setData<typename RemainingContainerT::head_type, typename RemainingContainerT::tail_type>(iProducts);
145 for (
size_t i = 0;
i !=
n; ++
i) {
170 producer_->queue().push([
this, iRecord, iEventSetupImpl,
token]() {
171 std::exception_ptr exceptPtr;
176 proxies = &((*postMayGetProxies_).front());
179 rec.setImpl(iRecord,
transitionID(), proxies, iEventSetupImpl,
true);
187 std::ostringstream ost;
190 exceptPtr = std::current_exception();