|
27 | 27 |
|
28 | 28 | class TObject; |
29 | 29 | class TObjArray; |
| 30 | +class TH1; |
| 31 | +class TTree; |
| 32 | +class THnBase; |
| 33 | +class TEfficiency; |
| 34 | +class TGraph; |
30 | 35 |
|
31 | 36 | namespace o2::quality_control::core |
32 | 37 | { |
@@ -79,7 +84,19 @@ class ObjectsManager |
79 | 84 | * @param obj The object to publish. |
80 | 85 | * @throws DuplicateObjectError |
81 | 86 | */ |
82 | | - void startPublishing(TObject* obj, PublicationPolicy = PublicationPolicy::Forever); |
| 87 | + template <typename T> |
| 88 | + void startPublishing(T* obj, PublicationPolicy policy = PublicationPolicy::Forever) |
| 89 | + { |
| 90 | + if constexpr (!std::is_base_of_v<mergers::MergeInterface, T>() && |
| 91 | + !std::is_base_of_v<TCollection, T>() && |
| 92 | + !std::is_base_of_v<TH1, T>() && |
| 93 | + !std::is_base_of_v<TTree, T>() && |
| 94 | + !std::is_base_of_v<TGraph, T>() && |
| 95 | + !std::is_base_of_v<TEfficiency, T>()) { |
| 96 | + static_assert(true, "You are trying to start publish object, that is not mergeable"); |
| 97 | + } |
| 98 | + startPublishingImpl(obj, policy); |
| 99 | + } |
83 | 100 |
|
84 | 101 | /** |
85 | 102 | * Stop publishing this object |
@@ -223,6 +240,8 @@ class ObjectsManager |
223 | 240 | bool mUpdateServiceDiscovery; |
224 | 241 | Activity mActivity; |
225 | 242 | std::vector<std::string> mMovingWindowsList; |
| 243 | + |
| 244 | + void startPublishingImpl(TObject* obj, PublicationPolicy); |
226 | 245 | }; |
227 | 246 |
|
228 | 247 | } // namespace o2::quality_control::core |
|
0 commit comments