Folks,
I've been playing with the new Event/Collector engine API that's been
introduced in 0.7. I've found this API to be a nice fit for an event-oriented
project I've been hacking on for the past few weeks:
https://github.com/kgiusti/dingus
After working with the new API for awhile, I'd like to propose a change to the
API as it stands now - I'd like to see a bit more granularity with respect to
the endpoint state change events.
In the current implementation, the PN_{CONNECTION,SESSION,LINK}_STATE events
are generated only when the flags for the _remote_ endpoint state changes. I
see how this makes sense, as the local flags are changed by the application
invoking 'open()' or 'close()' - and the application can be written to track
when these calls are made. But I'd like to avoid having to implement this
extra state tracking.
Would it be possible to issue separate events for remote and local endpoint
state changes? For example, instead of having just a PN_*_STATE event issued
when the remote flags change, could the API issue:
PN_*_LOCAL_EP_STATE when the local flags are modified, and
PN_*_REMOTE_EP_STATE when the remote flags have changed?
One other minor nit: the documentation describing the PN_LINK_FLOW and
PN_DELIVERY events needs some clarity. Specifically:
1) PN_DELIVERY is generated only when the remote disposition has changed
(correct me if I'm wrong, but this appears to be the behavior I'm observing).
This event is _NOT_ generated when the delivery's writable state has changed
(see 2). Is the event generated when the delivery becomes 'readable'? I
haven't checked that.
2) PN_LINK_FLOW - the documentation should explain how to handle this type of
event. My understanding is that the application should use this event to
trigger processing of outgoing deliveries that may have become writable. This
should be noted, as the event itself does not reference a particular delivery
(and, as noted above, the PN_DELIVERY event won't be generated when it becomes
writable).
Thoughts?
--
-K