Global Signal (removed)¶
global_signal no longer exists. It was removed in 2.0.0, along with its relays
and the dispatcher behind it.
This page is kept so that a search for the name lands somewhere useful rather than nowhere.
What it was¶
A tab that needed something from a data plugin — a sample rate, an event count, a
status — emitted global_signal naming the plugin, the method, its arguments,
and the name of a callback to hand the answer to. The signal travelled from the
View or Model up through MetaController to MainController, which resolved
the plugin and called the method, then called the named callback, which set an
attribute on the View. The caller read that attribute on its next statement.
What to use instead¶
Call the plugin. See Calling a Data Plugin:
samplerate = self.model.call("MetaReader", reader_key, "get_samplerate")
The answer is the return value. There is no callback and no attribute to read back.
Why it went¶
The round trip was seven hops, and the dispatcher logged-and-returned on four separate conditions. A dispatch that failed therefore left the previous call’s value sitting on the attribute, and the caller read that — with no error, and no log line the caller could see. It caused two real bugs: a metadata plot showing the previous subset’s rows, and a query running against the previous experiment’s id.
call() raises where the failure happens, so a failed call stops the thing it
should stop.
If you are porting code¶
An emit with a callback becomes a call whose return value you use directly. An emit without a callback — one that only asked for something to be done — becomes either a direct call or, for creating, editing and deleting data plugins, one of the typed signals described in Data Plugin Controller Signal (replaced).