qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robbie Gemmell <robbie.gemm...@gmail.com>
Subject Re: Proton Python on_sendable behavior
Date Wed, 19 Oct 2016 14:02:22 GMT
On 18 October 2016 at 22:13, Justin Ross <justin.ross@gmail.com> wrote:
> https://gist.github.com/ssorj/1ccf4d1499563722bc419f1e1fac11bf
>
> In this example, there is still ample credit on the link after the last
> on_sendable() is printed, but on_sendable is never fired again.  Is that
> expected behavior?
>
> It appears that on_link_flow is only fired when link credit is updated, and
> on_link_flow is the source of all on_sendable events.
>
> https://github.com/apache/qpid-proton/blob/master/proton-c/bindings/python/proton/handlers.py#L36

Thats my understanding from past discussion on these bits. Flow events
are raised when a flow frame arrives from the peer, and also generated
when sends occur on sending links, I believe to represent that 'credit
has changed' (I added a flag in proton-j to allow disabling that,
since it makes no sense in many cases). The on_sendable callback then
fires when a flow event is handled and there is actually credit to
send messages.

If the last sendable callback is triggered and you dont have anything
to send, then you wont get any more sendable callbacks until more
credit arrives from the peer, which if you arent doing anything such
as sending it messages, its likely it will never give. Essentially at
that point you have been told there is credit to send messages, and
its up to you to react and manage doing something to send them [on the
container thread] once you do have something to send.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Mime
View raw message