issue #155: add DEL_ROUTE, propagate ADD_ROUTE upwards
* IDs are allocated by the parent responsible for contructing a new child, using ALLOCATE_ID to the master as necessary to allocate new ID ranges. * ADD_ROUTE is sent up the tree rather than down. This permits construction of the new context to complete concurrent to parent contexts learning about its existence. Since all streams are strictly ordered, it's not possible for any parent to observe messages from the new context prior to arrival of an ADD_ROUTE from the parent notifying of its existence. If the new context, for example, implements an Ansible async task, its parent can start executing that without waiting for any synchronous confirmation from any parent or the master. * Since routes propagate up, it's no longer possible for a plain non-parent child to ever receive ADD_ROUTE, so that code can be moved out of core.py and into parent.py (-0.2kb compressed). * Add a .routes attribute to parent.Stream, and respond to disconnection signal on the stream by propagating DEL_ROUTE for any ADD_ROUTE ever received from that stream. * Centralize route management in a new parent.RouteMonitor class
Showing
Please register or sign in to comment