The proposed patch adds two functions to the engine API:
void pn_offer(link, credit)
pn_offer is used by the attached node to indicate to the engine that it has messages available for immediate transfer over the link.
pn_connection_links_writable returns true if the connection has at least one outgoing link with both receiver credit and offered credit. This is used by the driver to ensure that the connection's FD (or equivalent) is in the set of writable FDs to be processed it the outgoing transport is writable.
Note that pn_offer is absolute (not cumulative). The attached node is responsible for keeping the offer vaule up-to-date as messages are sent and received.
The patch does not make any changes to the protocol exchange. Additional work is needed to communicate the offer information to the remote receiver so the receiver can intelligently manage its credits.
The driving need for this change is for driver functionality. pn_offer is the cleanest mechanism for a node to tell the driver that an outbound link's connection should be processed.