Create wire object from params and attach it to the communication layer
All middleware will be informed from WireMiddleware.onAdd before wire is attached to the layer
Access to the data container, retrieve WireData object when value is null and set when is not
WireData is a data container to changes of which anyone can subscribe/unsubscribe.
It's associated with string key.
WireData can't be null and Wire.data(key) will always return WireData instance.
Initial value will be null and special property of WireData isSet equal to false until any value is set
If value is null then delete method of WireData will be called, object will be removed from system
To protect WireData from being set from unappropriated places the WireDataLockToken token introduced.
When only specific object want have rights to write/change value of WireData it can create WireDataLockToken object
and pass it to Wire.data method as option parameter token to validate the assign action.
WireData API:
Remove all wires for specific signal, for more precise target to remove add scope and/or listener
All middleware will be informed from WireMiddleware.onRemove after signal removed, only if existed
Returns bool telling signal existed in communication layer
Send signal through all wires has the signal string value
Payload is optional, default is null, passed to WireListener from transfer
If use scope then only wire with this scope value will receive the payload
All middleware will be informed from WireMiddleware.onSend before signal sent on wires