You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The user asks for one or more PVs, providing name and priority.
The Context:
Have I already got a PV instance for this? If so, return that. If not, allocate a cid and instantiate a corresponding PV object.
For all the newPV objects just created above, send [(name, cid), (name2, cid2)] to the Broadcaster to search.
Cache the cid -> PV mapping and return a list of PV objects, some or all of which may not be connected yet.
The Broadcaster:
Do I have an unexpired search result for this? If so, send (address, (cid1, cid2, ...)) to the Context. If not, send a SearchRequest using the cid provided by the Context.
In the recv loop, send (address, (cid1, cid2, ...)) to the Context as updates come in. (I think that all Contexts are current notified, which is a problem because they have different cids.... this could be solved using a queue per context, as we do in ChannelData.)
The Context:
Receives (address, (cid1, cid2, ...)) from the Broadcaster in its channel creation queue.
Looks up the cid in its cache to find the PV, which knows the priority. Checks: do I have a VirtualCircuitManager for this (address, prority) yet? If not, create a socket and a VirtualCircuitManager.
Creates a caproto.ClientChanel. (There is not need for a special Channel class.)
Tacks a reference to this caproto.ClientChannel and to the VirtualCircuitManager onto the PV.
Sends creation messages via VirualCircuitManager.send.
The VirtualCircuitManager:
Receives channel creation confirmation.
Looks up cid on the VirtualCircuitManager. Tells the PV it is connected via updating a connected attribute and possibly setting an Event, to make it possible to wait on PV connection.
The text was updated successfully, but these errors were encountered:
Notes to self. Implementation in progress.
PV
instance for this? If so, return that. If not, allocate acid
and instantiate a correspondingPV
object.PV
objects just created above, send[(name, cid), (name2, cid2)]
to the Broadcaster to search.cid -> PV
mapping and return a list ofPV
objects, some or all of which may not be connected yet.(address, (cid1, cid2, ...))
to theContext
. If not, send aSearchRequest
using thecid
provided by theContext
.(address, (cid1, cid2, ...))
to theContext
as updates come in. (I think that all Contexts are current notified, which is a problem because they have different cids.... this could be solved using a queue per context, as we do inChannelData
.)(address, (cid1, cid2, ...))
from the Broadcaster in its channel creation queue.cid
in its cache to find thePV
, which knows thepriority
. Checks: do I have aVirtualCircuitManager
for this(address, prority)
yet? If not, create a socket and aVirtualCircuitManager
.caproto.ClientChanel
. (There is not need for a specialChannel
class.)caproto.ClientChannel
and to theVirtualCircuitManager
onto thePV
.VirualCircuitManager.send
.cid
on theVirtualCircuitManager
. Tells thePV
it isconnected
via updating aconnected
attribute and possibly setting anEvent
, to make it possible to wait onPV
connection.The text was updated successfully, but these errors were encountered: