You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2014/10/10 16:00:03 UTC
svn commit: r1630895 - in /qpid/proton/branches/examples:
proton-c/bindings/python/proton.py tutorial/helloworld.py
tutorial/proton_events.py tutorial/proton_server.py
Author: gsim
Date: Fri Oct 10 14:00:02 2014
New Revision: 1630895
URL: http://svn.apache.org/r1630895
Log:
Updated to work with latest event class from trunk
Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/tutorial/helloworld.py
qpid/proton/branches/examples/tutorial/proton_events.py
qpid/proton/branches/examples/tutorial/proton_server.py
Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630895&r1=1630894&r2=1630895&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 14:00:02 2014
@@ -2911,6 +2911,10 @@ class Delivery(object):
self._dlv = None
@property
+ def released(self):
+ return self._dlv is None
+
+ @property
def tag(self):
return pn_delivery_tag(self._dlv)
@@ -3422,6 +3426,62 @@ class Event:
collector._contexts.remove(self.context)
self.context._released()
+ @property
+ def connection(self):
+ if self.clazz == "pn_connection":
+ return self.context
+ elif self.clazz == "pn_session":
+ return self.context.connection
+ elif self.clazz == "pn_link":
+ return self.context.connection
+ elif self.clazz == "pn_delivery" and not self.context.released:
+ return self.context.link.connection
+ else:
+ return None
+
+ @property
+ def session(self):
+ if self.clazz == "pn_session":
+ return self.context
+ elif self.clazz == "pn_link":
+ return self.context.session
+ elif self.clazz == "pn_delivery" and not self.context.released:
+ return self.context.link.session
+ else:
+ return None
+
+ @property
+ def link(self):
+ if self.clazz == "pn_link":
+ return self.context
+ elif self.clazz == "pn_delivery" and not self.context.released:
+ return self.context.link
+ else:
+ return None
+
+ @property
+ def sender(self):
+ l = self.link
+ if l and l.is_sender:
+ return l
+ else:
+ return None
+
+ @property
+ def receiver(self):
+ l = self.link
+ if l and l.is_receiver:
+ return l
+ else:
+ return None
+
+ @property
+ def delivery(self):
+ if self.clazz == "pn_delivery":
+ return self.context
+ else:
+ return None
+
def __repr__(self):
return "%s(%s)" % (pn_event_type_name(self.type), self.context)
Modified: qpid/proton/branches/examples/tutorial/helloworld.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/helloworld.py?rev=1630895&r1=1630894&r2=1630895&view=diff
==============================================================================
--- qpid/proton/branches/examples/tutorial/helloworld.py (original)
+++ qpid/proton/branches/examples/tutorial/helloworld.py Fri Oct 10 14:00:02 2014
@@ -31,8 +31,8 @@ class HelloWorld(proton_events.BaseHandl
self.conn.create_sender(self.address)
def on_credit(self, event):
- event.link.send_msg(Message(body=u"Hello World!"))
- event.link.close()
+ event.sender.send_msg(Message(body=u"Hello World!"))
+ event.sender.close()
def on_message(self, event):
print event.message.body
Modified: qpid/proton/branches/examples/tutorial/proton_events.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/proton_events.py?rev=1630895&r1=1630894&r2=1630895&view=diff
==============================================================================
--- qpid/proton/branches/examples/tutorial/proton_events.py (original)
+++ qpid/proton/branches/examples/tutorial/proton_events.py Fri Oct 10 14:00:02 2014
@@ -281,45 +281,27 @@ class Events(object):
return self.collector.peek() == None
class ApplicationEvent(Event):
- CATEGORY_GENERAL = "general"
-
def __init__(self, type, connection=None, session=None, link=None, delivery=None, subject=None):
self.type = type
- self.transport = None
self.subject = subject
if delivery:
- self.delivery = delivery
- self.link = delivery.link
- self.session = self.link.session
- self.connection = self.session.connection
- self.category = Event.CATEGORY_DELIVERY
+ self.context = delivery
+ self.clazz = "pn_delivery"
elif link:
- self.delivery = None
- self.link = link
- self.session = self.link.session
- self.connection = self.session.connection
- self.category = Event.CATEGORY_LINK
+ self.context = link
+ self.clazz = "pn_link"
elif session:
- self.delivery = None
- self.link = None
- self.session = session
- self.connection = self.session.connection
- category = Event.CATEGORY_SESSION
+ self.context = session
+ self.clazz = "pn_session"
elif connection:
- self.delivery = None
- self.link = None
- self.session = None
- self.connection = connection
- self.category = Event.CATEGORY_CONNECTION
- else:
- self.delivery = None
- self.link = None
- self.session = None
- self.connection = None
- self.category = ApplicationEvent.CATEGORY_GENERAL
+ self.context = connection
+ self.clazz = "pn_connection"
+ else:
+ self.context = None
+ self.clazz = "none"
def __repr__(self):
- objects = [self.connection, self.session, self.link, self.delivery, self.subject]
+ objects = [self.context, self.subject]
return "%s(%s)" % (self.type,
", ".join([str(o) for o in objects if o is not None]))
@@ -473,21 +455,23 @@ class FlowController(EventDispatcher):
self.top_up(event.link)
def on_delivery(self, event):
- if event.delivery.link.is_receiver:
+ if not event.delivery.released and event.delivery.link.is_receiver:
self.top_up(event.delivery.link)
class ScopedDispatcher(EventDispatcher):
scopes = {
- Event.CATEGORY_CONNECTION: ["connection"],
- Event.CATEGORY_SESSION: ["session", "connection"],
- Event.CATEGORY_LINK: ["link", "session", "connection"],
- Event.CATEGORY_DELIVERY: ["delivery", "link", "session", "connection"]
+ "pn_connection": ["connection"],
+ "pn_session": ["session", "connection"],
+ "pn_link": ["link", "session", "connection"],
+ "pn_delivery": ["delivery", "link", "session", "connection"]
}
def dispatch(self, event):
+ if event.type in [Event.CONNECTION_FINAL, Event.SESSION_FINAL, Event.LINK_FINAL]:
+ return
method = self.methods.get(event.type, "on_%s" % str(event.type))
- objects = [getattr(event, attr) for attr in self.scopes.get(event.category, [])]
+ objects = [getattr(event, attr) for attr in self.scopes.get(event.clazz, [])]
targets = [getattr(o, "context") for o in objects if hasattr(o, "context")]
handlers = [getattr(t, method) for t in targets if hasattr(t, method)]
for h in handlers:
@@ -542,8 +526,8 @@ class OutgoingMessageHandler(EventDispat
def on_delivery(self, event):
dlv = event.delivery
- link = dlv.link
- if link.is_sender and dlv.updated and not hasattr(dlv, "_been_settled"):
+ if dlv.released: return
+ if dlv.link.is_sender and dlv.updated:
if dlv.remote_state == Delivery.ACCEPTED:
self.on_accepted(event)
elif dlv.remote_state == Delivery.REJECTED:
@@ -555,7 +539,6 @@ class OutgoingMessageHandler(EventDispat
if dlv.settled:
self.on_settled(event)
if self.auto_settle():
- dlv._been_settled = True
dlv.settle()
def on_credit(self, event): pass
@@ -581,7 +564,7 @@ class Reject(ProtonException):
class IncomingMessageHandler(EventDispatcher):
def on_delivery(self, event):
dlv = event.delivery
- link = dlv.link
+ if dlv.released or not dlv.link.is_receiver: return
if dlv.readable and not dlv.partial:
event.message = recv_msg(dlv)
try:
Modified: qpid/proton/branches/examples/tutorial/proton_server.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/proton_server.py?rev=1630895&r1=1630894&r2=1630895&view=diff
==============================================================================
--- qpid/proton/branches/examples/tutorial/proton_server.py (original)
+++ qpid/proton/branches/examples/tutorial/proton_server.py Fri Oct 10 14:00:02 2014
@@ -32,7 +32,7 @@ class Server(IncomingMessageHandler):
self.on_request(event.message.body, event.message.reply_to)
def on_connection_open(self, event):
- if "ANONYMOUS-RELAY" in event.connection.remote_offered_capabilities:
+ if event.connection.remote_offered_capabilities and "ANONYMOUS-RELAY" in event.connection.remote_offered_capabilities:
self.relay = self.conn.create_sender(None)
def on_connection_close(self, endpoint, error):
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org