Data handle rework
WARNING: This MR is currently rebased on top of !769 (merged)
This long-awaited MR proposes to completely rewrite the DataHandle infrastructure as outlined during previous Gaudi workshops. Old DataHandles are, for now, still available for backward compatibility.
Here's what I think must be resolved before this can be merged in:
-
Decide customization perimeter and final design of IDataHandleMetadata. -
Implement any missing features needed for ATLAS migration. -
Understand LHCb test failures.
And here's what I think is not a blocker for this first MR, but should be eventually integrated before we can consider this a complete implementation:
-
Add a type-erased ContainerHandle which can tell the size of a container without knowing its type (see hgraslan/Gaudi!1 (comment 392769) ) -
Integrate Range-v3 support (which is currently sketched, but not implemented), and test it. -
Optimize Whiteboard manipulation by restricting what unchecked non-DataHandle code is allowed to do with it. -
Integrate conditions support (this would take the form of a new subclass of DataHandle alongside EventDataHandle, see https://gitlab.cern.ch/hgraslan/conditions-prototype for the kind of handle/whiteboard design I have in mind). -
Add and integrate a reentrant Whiteboard interface. -
Use reentrant Algorithm interface once it becomes available. -
Migrate existing Gaudi and Gaudi-based code to new DataHandles. -
Drop the old DataHandle code once migration is complete.
If you think anything is missing from these lists, please add a discussion to the diff or comments!
Edited by Hadrien Benjamin Grasland