It'd be nice if we don't have to load all devices in the facility when initializing lightpath. There should be a way to only create the devices we care about, even if we're building the whole facility graph to find paths.
I had this in mind when creating the lightpath interface, but didn't fully leverage it.
Current Behavior
Currently on the creation of the facility graph, we load all the devices. This makes it simpler to put these devices into their beampaths, but also incurs a lot of startup cost.
Possible Solution
Load the facility graph and stash the SearchResult instead of the device
Make LightController.beamlines hold paths (lists of nodes) instead of BeamPath
Create an access-er method that fills a BeamPath if it does not already exist, and returns a BeamPath if it has been filled.
Need to check when the gui subscribes to beampaths. Make sure BeamPaths are loaded before subscriptions occur.
Context
General startup costs must be squashed at all costs
Your Environment
pcds-5.4.1, with the updated lightpath-device-config
Expected Behavior
It'd be nice if we don't have to load all devices in the facility when initializing lightpath. There should be a way to only create the devices we care about, even if we're building the whole facility graph to find paths.
I had this in mind when creating the lightpath interface, but didn't fully leverage it.
Current Behavior
Currently on the creation of the facility graph, we load all the devices. This makes it simpler to put these devices into their beampaths, but also incurs a lot of startup cost.
Possible Solution
LightController.beamlines
hold paths (lists of nodes) instead ofBeamPath
BeamPath
if it does not already exist, and returns a BeamPath if it has been filled.BeamPaths
are loaded before subscriptions occur.Context
General startup costs must be squashed at all costs
Your Environment
pcds-5.4.1, with the updated lightpath-device-config