Author: rhs Date: Mon Oct 13 20:50:58 2014 New Revision: 1631543 URL: http://svn.apache.org/r1631543 Log: added dispatch code to event class
Added: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Handler.java Modified: qpid/proton/trunk/proton-c/bindings/python/proton.py qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java Modified: qpid/proton/trunk/proton-c/bindings/python/proton.py URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/python/proton.py?rev=1631543&r1=1631542&r2=1631543&view=diff ============================================================================== --- qpid/proton/trunk/proton-c/bindings/python/proton.py (original) +++ qpid/proton/trunk/proton-c/bindings/python/proton.py Mon Oct 13 20:50:58 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) @@ -3364,7 +3368,7 @@ class Collector: clazz = pn_class_name(pn_event_class(event)) context = wrappers[clazz](pn_event_context(event)) - return Event(clazz, context, pn_event_type(event)) + return Event(clazz, context, EventType.TYPES[pn_event_type(event)]) def pop(self): ev = self.peek() @@ -3375,41 +3379,54 @@ class Collector: def __del__(self): pn_collector_free(self._impl) +class EventType: + + TYPES = {} + + def __init__(self, number, method): + self.number = number + self.name = pn_event_type_name(self.number) + self.method = method + self.TYPES[number] = self + + def __repr__(self): + return self.name + class Event: - CONNECTION_INIT = PN_CONNECTION_INIT - CONNECTION_BOUND = PN_CONNECTION_BOUND - CONNECTION_UNBOUND = PN_CONNECTION_UNBOUND - CONNECTION_LOCAL_OPEN = PN_CONNECTION_LOCAL_OPEN - CONNECTION_LOCAL_CLOSE = PN_CONNECTION_LOCAL_CLOSE - CONNECTION_REMOTE_OPEN = PN_CONNECTION_REMOTE_OPEN - CONNECTION_REMOTE_CLOSE = PN_CONNECTION_REMOTE_CLOSE - CONNECTION_FINAL = PN_CONNECTION_FINAL - - SESSION_INIT = PN_SESSION_INIT - SESSION_LOCAL_OPEN = PN_SESSION_LOCAL_OPEN - SESSION_LOCAL_CLOSE = PN_SESSION_LOCAL_CLOSE - SESSION_REMOTE_OPEN = PN_SESSION_REMOTE_OPEN - SESSION_REMOTE_CLOSE = PN_SESSION_REMOTE_CLOSE - SESSION_FINAL = PN_SESSION_FINAL - - LINK_INIT = PN_LINK_INIT - LINK_LOCAL_OPEN = PN_LINK_LOCAL_OPEN - LINK_LOCAL_CLOSE = PN_LINK_LOCAL_CLOSE - LINK_LOCAL_DETACH = PN_LINK_LOCAL_DETACH - LINK_REMOTE_OPEN = PN_LINK_REMOTE_OPEN - LINK_REMOTE_CLOSE = PN_LINK_REMOTE_CLOSE - LINK_REMOTE_DETACH = PN_LINK_REMOTE_DETACH - LINK_FLOW = PN_LINK_FLOW - LINK_FINAL = PN_LINK_FINAL - - DELIVERY = PN_DELIVERY - - TRANSPORT = PN_TRANSPORT - TRANSPORT_ERROR = PN_TRANSPORT_ERROR - TRANSPORT_HEAD_CLOSED = PN_TRANSPORT_HEAD_CLOSED - TRANSPORT_TAIL_CLOSED = PN_TRANSPORT_TAIL_CLOSED - TRANSPORT_CLOSED = PN_TRANSPORT_CLOSED + CONNECTION_INIT = EventType(PN_CONNECTION_INIT, "on_connection_init") + CONNECTION_BOUND = EventType(PN_CONNECTION_BOUND, "on_connection_bound") + CONNECTION_UNBOUND = EventType(PN_CONNECTION_UNBOUND, "on_connection_unbound") + CONNECTION_LOCAL_OPEN = EventType(PN_CONNECTION_LOCAL_OPEN, "on_connection_local_open") + CONNECTION_LOCAL_CLOSE = EventType(PN_CONNECTION_LOCAL_CLOSE, "on_connection_local_close") + CONNECTION_REMOTE_OPEN = EventType(PN_CONNECTION_REMOTE_OPEN, "on_connection_remote_open") + CONNECTION_REMOTE_CLOSE = EventType(PN_CONNECTION_REMOTE_CLOSE, "on_connection_remote_close") + CONNECTION_FINAL = EventType(PN_CONNECTION_FINAL, "on_connection_final") + + SESSION_INIT = EventType(PN_SESSION_INIT, "on_session_init") + SESSION_LOCAL_OPEN = EventType(PN_SESSION_LOCAL_OPEN, "on_session_local_open") + SESSION_LOCAL_CLOSE = EventType(PN_SESSION_LOCAL_CLOSE, "on_session_local_close") + SESSION_REMOTE_OPEN = EventType(PN_SESSION_REMOTE_OPEN, "on_session_remote_open") + SESSION_REMOTE_CLOSE = EventType(PN_SESSION_REMOTE_CLOSE, "on_session_remote_close") + SESSION_FINAL = EventType(PN_SESSION_FINAL, "on_session_final") + + LINK_INIT = EventType(PN_LINK_INIT, "on_link_init") + LINK_LOCAL_OPEN = EventType(PN_LINK_LOCAL_OPEN, "on_link_local_open") + LINK_LOCAL_CLOSE = EventType(PN_LINK_LOCAL_CLOSE, "on_link_local_close") + LINK_LOCAL_DETACH = EventType(PN_LINK_LOCAL_DETACH, "on_link_local_detach") + LINK_REMOTE_OPEN = EventType(PN_LINK_REMOTE_OPEN, "on_link_remote_open") + LINK_REMOTE_CLOSE = EventType(PN_LINK_REMOTE_CLOSE, "on_link_remote_close") + LINK_REMOTE_DETACH = EventType(PN_LINK_REMOTE_DETACH, "on_link_remote_detach") + LINK_FLOW = EventType(PN_LINK_FLOW, "on_link_flow") + LINK_FINAL = EventType(PN_LINK_FINAL, "on_link_final") + + DELIVERY = EventType(PN_DELIVERY, "on_delivery") + + TRANSPORT = EventType(PN_TRANSPORT, "on_transport") + TRANSPORT_ERROR = EventType(PN_TRANSPORT_ERROR, "on_transport_error") + TRANSPORT_HEAD_CLOSED = EventType(PN_TRANSPORT_HEAD_CLOSED, "on_transport_head_closed") + TRANSPORT_TAIL_CLOSED = EventType(PN_TRANSPORT_TAIL_CLOSED, "on_transport_tail_closed") + TRANSPORT_CLOSED = EventType(PN_TRANSPORT_CLOSED, "on_transport_closed") def __init__(self, clazz, context, type): self.clazz = clazz @@ -3422,8 +3439,73 @@ class Event: collector._contexts.remove(self.context) self.context._released() + def dispatch(self, handler): + getattr(handler, self.type.method, handler.on_unhandled)(self) + + @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) + return "%s(%s)" % (self.type, self.context) + +class Handler: + + def on_unhandled(self, event): + pass + ### # Driver @@ -3617,61 +3699,6 @@ class Driver(object): def pending_connector(self): return Connector._wrap_connector(pn_driver_connector(self._driver)) -__all__ = [ - "API_LANGUAGE", - "IMPLEMENTATION_LANGUAGE", - "ABORTED", - "ACCEPTED", - "AUTOMATIC", - "PENDING", - "MANUAL", - "REJECTED", - "RELEASED", - "SETTLED", - "UNDESCRIBED", - "Array", - "Collector", - "Condition", - "Connection", - "Connector", - "Data", - "Delivery", - "Disposition", - "Described", - "Driver", - "DriverException", - "Endpoint", - "Event", - "Link", - "Listener", - "Message", - "MessageException", - "Messenger", - "MessengerException", - "ProtonException", - "VERSION_MAJOR", - "VERSION_MINOR", - "Receiver", - "SASL", - "Sender", - "Session", - "SSL", - "SSLDomain", - "SSLSessionDetails", - "SSLUnavailable", - "SSLException", - "Terminus", - "Timeout", - "Interrupt", - "Transport", - "TransportException", - "char", - "symbol", - "timestamp", - "ulong" - ] - - class Url(object): """ Simple URL parser/constructor, handles URLs of the form: @@ -3777,3 +3804,59 @@ class Url(object): self.host = self.host or '0.0.0.0' self.port = self.port or self.Port(self.scheme) return self + +__all__ = [ + "API_LANGUAGE", + "IMPLEMENTATION_LANGUAGE", + "ABORTED", + "ACCEPTED", + "AUTOMATIC", + "PENDING", + "MANUAL", + "REJECTED", + "RELEASED", + "SETTLED", + "UNDESCRIBED", + "Array", + "Collector", + "Condition", + "Connection", + "Connector", + "Data", + "Delivery", + "Disposition", + "Described", + "Driver", + "DriverException", + "Endpoint", + "Event", + "Handler", + "Link", + "Listener", + "Message", + "MessageException", + "Messenger", + "MessengerException", + "ProtonException", + "VERSION_MAJOR", + "VERSION_MINOR", + "Receiver", + "SASL", + "Sender", + "Session", + "SSL", + "SSLDomain", + "SSLSessionDetails", + "SSLUnavailable", + "SSLException", + "Terminus", + "Timeout", + "Interrupt", + "Transport", + "TransportException", + "Url", + "char", + "symbol", + "timestamp", + "ulong" + ] Added: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java?rev=1631543&view=auto ============================================================================== --- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java (added) +++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java Mon Oct 13 20:50:58 2014 @@ -0,0 +1,67 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.proton.engine; + + +/** + * BaseHandler + * + */ + +public class BaseHandler implements Handler +{ + + @Override public void onConnectionInit(Event e) { onUnhandled(e); } + @Override public void onConnectionLocalOpen(Event e) { onUnhandled(e); } + @Override public void onConnectionRemoteOpen(Event e) { onUnhandled(e); } + @Override public void onConnectionLocalClose(Event e) { onUnhandled(e); } + @Override public void onConnectionRemoteClose(Event e) { onUnhandled(e); } + @Override public void onConnectionBound(Event e) { onUnhandled(e); } + @Override public void onConnectionUnbound(Event e) { onUnhandled(e); } + @Override public void onConnectionFinal(Event e) { onUnhandled(e); } + + @Override public void onSessionInit(Event e) { onUnhandled(e); } + @Override public void onSessionLocalOpen(Event e) { onUnhandled(e); } + @Override public void onSessionRemoteOpen(Event e) { onUnhandled(e); } + @Override public void onSessionLocalClose(Event e) { onUnhandled(e); } + @Override public void onSessionRemoteClose(Event e) { onUnhandled(e); } + @Override public void onSessionFinal(Event e) { onUnhandled(e); } + + @Override public void onLinkInit(Event e) { onUnhandled(e); } + @Override public void onLinkLocalOpen(Event e) { onUnhandled(e); } + @Override public void onLinkRemoteOpen(Event e) { onUnhandled(e); } + @Override public void onLinkLocalDetach(Event e) { onUnhandled(e); } + @Override public void onLinkRemoteDetach(Event e) { onUnhandled(e); } + @Override public void onLinkLocalClose(Event e) { onUnhandled(e); } + @Override public void onLinkRemoteClose(Event e) { onUnhandled(e); } + @Override public void onLinkFlow(Event e) { onUnhandled(e); } + @Override public void onLinkFinal(Event e) { onUnhandled(e); } + + @Override public void onDelivery(Event e) { onUnhandled(e); } + @Override public void onTransport(Event e) { onUnhandled(e); } + @Override public void onTransportError(Event e) { onUnhandled(e); } + @Override public void onTransportHeadClosed(Event e) { onUnhandled(e); } + @Override public void onTransportTailClosed(Event e) { onUnhandled(e); } + @Override public void onTransportClosed(Event e) { onUnhandled(e); } + + @Override public void onUnhandled(Event event) {} + +} Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java?rev=1631543&r1=1631542&r2=1631543&view=diff ============================================================================== --- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java (original) +++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java Mon Oct 13 20:50:58 2014 @@ -69,6 +69,8 @@ public interface Event Object getContext(); + void dispatch(Handler handler); + Connection getConnection(); Session getSession(); Added: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Handler.java URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Handler.java?rev=1631543&view=auto ============================================================================== --- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Handler.java (added) +++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Handler.java Mon Oct 13 20:50:58 2014 @@ -0,0 +1,67 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.proton.engine; + + +/** + * Handler + * + */ + +public interface Handler +{ + + void onConnectionInit(Event e); + void onConnectionLocalOpen(Event e); + void onConnectionRemoteOpen(Event e); + void onConnectionLocalClose(Event e); + void onConnectionRemoteClose(Event e); + void onConnectionBound(Event e); + void onConnectionUnbound(Event e); + void onConnectionFinal(Event e); + + void onSessionInit(Event e); + void onSessionLocalOpen(Event e); + void onSessionRemoteOpen(Event e); + void onSessionLocalClose(Event e); + void onSessionRemoteClose(Event e); + void onSessionFinal(Event e); + + void onLinkInit(Event e); + void onLinkLocalOpen(Event e); + void onLinkRemoteOpen(Event e); + void onLinkLocalDetach(Event e); + void onLinkRemoteDetach(Event e); + void onLinkLocalClose(Event e); + void onLinkRemoteClose(Event e); + void onLinkFlow(Event e); + void onLinkFinal(Event e); + + void onDelivery(Event e); + void onTransport(Event e); + void onTransportError(Event e); + void onTransportHeadClosed(Event e); + void onTransportTailClosed(Event e); + void onTransportClosed(Event e); + + void onUnhandled(Event e); + +} Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java?rev=1631543&r1=1631542&r2=1631543&view=diff ============================================================================== --- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java (original) +++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java Mon Oct 13 20:50:58 2014 @@ -21,6 +21,7 @@ package org.apache.qpid.proton.engine.impl; import org.apache.qpid.proton.engine.Event; +import org.apache.qpid.proton.engine.Handler; import org.apache.qpid.proton.engine.Connection; import org.apache.qpid.proton.engine.Session; import org.apache.qpid.proton.engine.Link; @@ -66,6 +67,102 @@ class EventImpl implements Event return context; } + public void dispatch(Handler handler) + { + switch (type) { + case CONNECTION_INIT: + handler.onConnectionInit(this); + break; + case CONNECTION_LOCAL_OPEN: + handler.onConnectionLocalOpen(this); + break; + case CONNECTION_REMOTE_OPEN: + handler.onConnectionRemoteOpen(this); + break; + case CONNECTION_LOCAL_CLOSE: + handler.onConnectionLocalClose(this); + break; + case CONNECTION_REMOTE_CLOSE: + handler.onConnectionRemoteClose(this); + break; + case CONNECTION_BOUND: + handler.onConnectionBound(this); + break; + case CONNECTION_UNBOUND: + handler.onConnectionUnbound(this); + break; + case CONNECTION_FINAL: + handler.onConnectionFinal(this); + break; + case SESSION_INIT: + handler.onSessionInit(this); + break; + case SESSION_LOCAL_OPEN: + handler.onSessionLocalOpen(this); + break; + case SESSION_REMOTE_OPEN: + handler.onSessionRemoteOpen(this); + break; + case SESSION_LOCAL_CLOSE: + handler.onSessionLocalClose(this); + break; + case SESSION_REMOTE_CLOSE: + handler.onSessionRemoteClose(this); + break; + case SESSION_FINAL: + handler.onSessionFinal(this); + break; + case LINK_INIT: + handler.onLinkInit(this); + break; + case LINK_LOCAL_OPEN: + handler.onLinkLocalOpen(this); + break; + case LINK_REMOTE_OPEN: + handler.onLinkRemoteOpen(this); + break; + case LINK_LOCAL_DETACH: + handler.onLinkLocalDetach(this); + break; + case LINK_REMOTE_DETACH: + handler.onLinkRemoteDetach(this); + break; + case LINK_LOCAL_CLOSE: + handler.onLinkLocalClose(this); + break; + case LINK_REMOTE_CLOSE: + handler.onLinkRemoteClose(this); + break; + case LINK_FLOW: + handler.onLinkFlow(this); + break; + case LINK_FINAL: + handler.onLinkFinal(this); + break; + case DELIVERY: + handler.onDelivery(this); + break; + case TRANSPORT: + handler.onTransport(this); + break; + case TRANSPORT_ERROR: + handler.onTransportError(this); + break; + case TRANSPORT_HEAD_CLOSED: + handler.onTransportHeadClosed(this); + break; + case TRANSPORT_TAIL_CLOSED: + handler.onTransportTailClosed(this); + break; + case TRANSPORT_CLOSED: + handler.onTransportClosed(this); + break; + default: + handler.onUnhandled(this); + break; + } + } + public Connection getConnection() { if (context instanceof Connection) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org