Linking Scripts¶
These scripts contain all the logic for creating links between nodes. This involves, to a large extent, deciding which links to create.
Hooks¶
The hooks in this section are organized in 3 sub-categories. The first category includes hooks that are triggered by changes in the graph. Some of them are tasked to schedule a “rescan-for-linking” event, which is the lowest priority event and its purpose is to scan through all the linkable session items and link them to a particular target. The “rescan-for-linking” event is always scheduled to run once for all the graph changes in a cycle. This is achieved by flagging the event as already scheduled in the module-standard-event-source; this flag is then cleared by a hook that runs on this event.
Selecting a target for each linkable and linking to it is deferred to another set of hooks by pushing a “select-target” event for each linkable. This event is the highest priority event and therefore no other changes in the graph are processed while targets are being selected.
| Hook name | File | Triggered by | Action |
|---|---|---|---|
| linking/rescan-trigger | rescan.lua | linkable SI added|removed or metadata-changed | schedules rescan-for-linking event |
| linking/linkable-removed | rescan.lua | linkable SI removed | destroys links related to the removed linkable |
| linking/follow | move-follow.lua | metadata-changed | schedules rescan-for-linking when the configured default sources/sinks are changed by the user |
| linking/move | move-follow.lua | metadata-changed | schedules rescan-for-linking when node target metadata properties are changed |
| linking/rescan-media-role-links | rescan-media-role-links.lua | link SI added, removed or metadata-changed | activates or deactivates role-based links based on role priorities and actions |