def on_delivery(event)
if event.link.receiver?
d = event.delivery
if d.aborted?
delegate(:on_aborted, event)
d.settle
elsif d.complete?
if d.link.local_closed? && @opts[:auto_accept]
d.release
else
begin
delegate(:on_message, event)
d.accept if @opts[:auto_accept] && !d.settled?
rescue Qpid::Proton::Reject
d.reject
rescue Qpid::Proton::Release
d.release(true)
end
end
end
delegate(:on_settled, event) if d.settled?
add_credit(event)
else
t = event.tracker
if t.updated?
case t.state
when Qpid::Proton::Delivery::ACCEPTED then delegate(:on_accepted, event)
when Qpid::Proton::Delivery::REJECTED then delegate(:on_rejected, event)
when Qpid::Proton::Delivery::RELEASED then delegate(:on_released, event)
when Qpid::Proton::Delivery::MODIFIED then delegate(:on_modified, event)
end
delegate(:on_settled, event) if t.settled?
t.settle if @opts[:auto_settle]
end
end
end