• David Wilson's avatar
    issue #155: add DEL_ROUTE, propagate ADD_ROUTE upwards · 54ff1c90
    David Wilson authored
    * 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
    54ff1c90
howitworks.rst 39.2 KB