Table of Contents | ||
---|---|---|
|
...
At any time the KRL developer can get an array of all established subscriptions by querying the established()
function in the io.picolabs.subscription
ruleset. Each member of the array will have a map giving all needed information about the subscription (descriptions of these attributes are given in the Subscription Attributes section). The "Tx"
attribute in this map is the ECI of the other pico's channel for receiving events and queries. The developer can use this value with event:send() to send events valid for the channel to the pico, or send queries using skyQuery/HTTPthe wrangler:picoQuery()
function (see “Accessing a Function Shared by Another Pico”).
However, using the established()
function is not necessary. A developer could manage subscriptions that only they care about by saving the subscription information when a new subscription is created by reacting to the wrangler:subscription_added
event.
...
Code Block | ||
---|---|---|
| ||
/* In the meta block: "use module io.picolabs.subscription alias subscription" */ /* Given a valid Sub ID get the name of the other pico */ rule queryPeer { select when update get_peer_info pre { subID = "cjy4yp73q00940sbz9ocy7h5c" // Given a valid Sub ID peerSubs = subscription:established("Id", subID) // Get established subscriptions that match that ID sub = peerSubs.head() // Returned an array so we get the first sub peerChannel = sub{"Tx"} // Get the "Tx" channel to send our query to peerHost = (sub{"Tx_host"} || meta:host) // See if the pico is on a different host. If it isn't use this engine's host peersInfo = wrangler:skyQuerypicoQuery(peerChannel, "io.picolabs.wrangler", "myself", null, peerHost) // Actually query the pico with the information we've found peersPicoName = peersInfo{"name"}.klog("pico name is") // Use the returned query info to get the info we want } } |
Using an API Call
Warning |
---|
not yet testedThe rule that reacts to a |
Subscriptions also provides an API event that the KRL developer can raise to send an event on a subscription. The developer can choose to either send an event to a specific subscription ID, to all subscriptions with a certain Tx_role, or all subscriptions with a certain Rx_role, or a mixture of the three.
...
The ID of a subscription identifies a subscription relationship. By default it is a globally unique identifier assigned by wrangler, but it can be set by the developer in the initial wrangler:subscription
event. Both picos record the same ID for the subscription, as the ID represents the relationship itself.
...