Author: kgiusti
Date: Tue Apr 8 18:14:33 2014
New Revision: 1585803
URL: http://svn.apache.org/r1585803
Log:
PROTON-557: add events for local endpoint state changes, add event categories.
Modified:
qpid/proton/trunk/proton-c/bindings/python/proton.py
qpid/proton/trunk/proton-c/include/proton/event.h
qpid/proton/trunk/proton-c/src/engine/engine.c
qpid/proton/trunk/proton-c/src/engine/event.c
qpid/proton/trunk/proton-c/src/messenger/messenger.c
qpid/proton/trunk/proton-c/src/transport/transport.c
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/ConnectionImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SenderImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/trunk/proton-j/src/main/resources/cengine.py
qpid/proton/trunk/tests/python/proton_tests/engine.py
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=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/trunk/proton-c/bindings/python/proton.py Tue Apr 8 18:14:33
2014
@@ -3277,6 +3277,7 @@ class Collector:
else:
tp = None
return Event(type=pn_event_type(event),
+ category=pn_event_category(event),
connection=Connection._wrap_connection(pn_event_connection(event)),
session=Session._wrap_session(pn_event_session(event)),
link=Link._wrap_link(pn_event_link(event)),
@@ -3291,15 +3292,22 @@ class Collector:
class Event:
- CONNECTION_STATE = PN_CONNECTION_STATE
- SESSION_STATE = PN_SESSION_STATE
- LINK_STATE = PN_LINK_STATE
+ CATEGORY_PROTOCOL = PN_EVENT_CATEGORY_PROTOCOL
+
+ CONNECTION_LOCAL_STATE = PN_CONNECTION_LOCAL_STATE
+ CONNECTION_REMOTE_STATE = PN_CONNECTION_REMOTE_STATE
+ SESSION_LOCAL_STATE = PN_SESSION_LOCAL_STATE
+ SESSION_REMOTE_STATE = PN_SESSION_REMOTE_STATE
+ LINK_LOCAL_STATE = PN_LINK_LOCAL_STATE
+ LINK_REMOTE_STATE = PN_LINK_REMOTE_STATE
LINK_FLOW = PN_LINK_FLOW
DELIVERY = PN_DELIVERY
TRANSPORT = PN_TRANSPORT
- def __init__(self, type, connection, session, link, delivery, transport):
+ def __init__(self, type, category,
+ connection, session, link, delivery, transport):
self.type = type
+ self.category = category
self.connection = connection
self.session = session
self.link = link
Modified: qpid/proton/trunk/proton-c/include/proton/event.h
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/event.h?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/event.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/event.h Tue Apr 8 18:14:33 2014
@@ -77,6 +77,15 @@ extern "C" {
typedef struct pn_event_t pn_event_t;
/**
+ * Related events are grouped into categories
+ */
+typedef enum {
+ PN_EVENT_CATEGORY_NONE = 0,
+ PN_EVENT_CATEGORY_PROTOCOL = 0x00010000,
+ PN_EVENT_CATEGORY_COUNT = 2
+} pn_event_category_t;
+
+/**
* An event type.
*/
typedef enum {
@@ -90,37 +99,40 @@ typedef enum {
* this type point to the relevant connection as well as its
* associated transport.
*/
- PN_CONNECTION_STATE = 1,
+ PN_CONNECTION_REMOTE_STATE = PN_EVENT_CATEGORY_PROTOCOL+1,
+ PN_CONNECTION_LOCAL_STATE = PN_EVENT_CATEGORY_PROTOCOL+2,
/**
* The endpoint state flags for a session have changed. Events of
* this type point to the relevant session as well as its associated
* connection and transport.
*/
- PN_SESSION_STATE = 2,
+ PN_SESSION_REMOTE_STATE = PN_EVENT_CATEGORY_PROTOCOL+3,
+ PN_SESSION_LOCAL_STATE = PN_EVENT_CATEGORY_PROTOCOL+4,
/**
* The endpoint state flags for a link have changed. Events of this
* type point to the relevant link as well as its associated
* session, connection, and transport.
*/
- PN_LINK_STATE = 4,
+ PN_LINK_REMOTE_STATE = PN_EVENT_CATEGORY_PROTOCOL+5,
+ PN_LINK_LOCAL_STATE = PN_EVENT_CATEGORY_PROTOCOL+6,
/**
* The flow control state for a link has changed. Events of this
* type point to the relevant link along with its associated
* session, connection, and transport.
*/
- PN_LINK_FLOW = 8,
+ PN_LINK_FLOW = PN_EVENT_CATEGORY_PROTOCOL+7,
/**
* A delivery has been created or updated. Events of this type point
* to the relevant delivery as well as its associated link, session,
* connection, and transport.
*/
- PN_DELIVERY = 16,
+ PN_DELIVERY = PN_EVENT_CATEGORY_PROTOCOL+8,
/**
* The transport has new data to read and/or write. Events of this
* type point to the relevant transport as well as its associated
* connection.
*/
- PN_TRANSPORT = 32
+ PN_TRANSPORT = PN_EVENT_CATEGORY_PROTOCOL+9
} pn_event_type_t;
/**
@@ -178,6 +190,14 @@ PN_EXTERN bool pn_collector_pop(pn_colle
PN_EXTERN pn_event_type_t pn_event_type(pn_event_t *event);
/**
+ * Get the category an event belongs to.
+ *
+ * @param[in] event an event object
+ * @return the category the event belongs to
+ */
+PN_EXTERN pn_event_category_t pn_event_category(pn_event_t *event);
+
+/**
* Get the connection associated with an event.
*
* @param[in] event an event object
Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Tue Apr 8 18:14:33 2014
@@ -33,6 +33,7 @@
#include "../platform.h"
#include "../platform_fmt.h"
#include "../transport/transport.h"
+#include "../engine/event.h"
// endpoints
@@ -51,18 +52,61 @@ pn_connection_t *pn_ep_get_connection(pn
return NULL;
}
+/* map the endpoint type to its local event type */
+static const pn_event_type_t endpoint_event_map[] = {
+ PN_CONNECTION_LOCAL_STATE, /* CONNECTION */
+ PN_SESSION_LOCAL_STATE, /* SESSION */
+ PN_LINK_LOCAL_STATE, /* SENDER */
+ PN_LINK_LOCAL_STATE}; /* RECEIVER */
+
+/* setup the event given the endpoint that generated the event */
+static void endpoint_init_event(pn_event_t *event,
+ pn_endpoint_t *endpoint)
+{
+ switch (endpoint->type) {
+ case CONNECTION: {
+ pn_connection_t *conn = (pn_connection_t *) endpoint;
+ pn_event_init_connection(event, conn);
+ }
+ break;
+ case SESSION: {
+ pn_session_t *ssn = (pn_session_t *) endpoint;
+ pn_event_init_session(event, ssn);
+ }
+ break;
+ case SENDER:
+ case RECEIVER: {
+ pn_link_t *link = (pn_link_t*) endpoint;
+ pn_event_init_link(event, link);
+ }
+ break;
+ }
+}
+
static void pn_endpoint_open(pn_endpoint_t *endpoint)
{
// TODO: do we care about the current state?
PN_SET_LOCAL(endpoint->state, PN_LOCAL_ACTIVE);
- pn_modified(pn_ep_get_connection(endpoint), endpoint, true);
+ pn_connection_t *conn = pn_ep_get_connection(endpoint);
+ pn_event_t *event = pn_collector_put(conn->collector,
+ endpoint_event_map[endpoint->type]);
+ if (event) {
+ endpoint_init_event(event, endpoint);
+ }
+ pn_modified(conn, endpoint, true);
}
-void pn_endpoint_close(pn_endpoint_t *endpoint)
+static void pn_endpoint_close(pn_endpoint_t *endpoint)
{
// TODO: do we care about the current state?
PN_SET_LOCAL(endpoint->state, PN_LOCAL_CLOSED);
- pn_modified(pn_ep_get_connection(endpoint), endpoint, true);
+ pn_connection_t *conn = pn_ep_get_connection(endpoint);
+ pn_event_t *event = pn_collector_put(conn->collector,
+ endpoint_event_map[endpoint->type]);
+ if (event) {
+ endpoint_init_event(event, endpoint);
+ }
+ pn_modified(conn, endpoint, true);
}
void pn_connection_reset(pn_connection_t *connection)
@@ -74,12 +118,14 @@ void pn_connection_reset(pn_connection_t
void pn_connection_open(pn_connection_t *connection)
{
- if (connection) pn_endpoint_open((pn_endpoint_t *) connection);
+ assert(connection);
+ pn_endpoint_open(&connection->endpoint);
}
void pn_connection_close(pn_connection_t *connection)
{
- if (connection) pn_endpoint_close((pn_endpoint_t *) connection);
+ assert(connection);
+ pn_endpoint_close(&connection->endpoint);
}
void pn_endpoint_tini(pn_endpoint_t *endpoint);
@@ -185,12 +231,14 @@ pn_connection_t *pn_session_connection(p
void pn_session_open(pn_session_t *session)
{
- if (session) pn_endpoint_open((pn_endpoint_t *) session);
+ assert(session);
+ pn_endpoint_open(&session->endpoint);
}
void pn_session_close(pn_session_t *session)
{
- if (session) pn_endpoint_close((pn_endpoint_t *) session);
+ assert(session);
+ pn_endpoint_close(&session->endpoint);
}
void pn_session_free(pn_session_t *session)
@@ -234,12 +282,14 @@ void pn_remove_link(pn_session_t *ssn, p
void pn_link_open(pn_link_t *link)
{
- if (link) pn_endpoint_open((pn_endpoint_t *) link);
+ assert(link);
+ pn_endpoint_open(&link->endpoint);
}
void pn_link_close(pn_link_t *link)
{
- if (link) pn_endpoint_close((pn_endpoint_t *) link);
+ assert(link);
+ pn_endpoint_close(&link->endpoint);
}
void pn_terminus_free(pn_terminus_t *terminus)
Modified: qpid/proton/trunk/proton-c/src/engine/event.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/event.c?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/event.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/event.c Tue Apr 8 18:14:33 2014
@@ -242,6 +242,11 @@ pn_event_type_t pn_event_type(pn_event_t
return event->type;
}
+pn_event_category_t pn_event_category(pn_event_t *event)
+{
+ return (pn_event_category_t)(event->type & 0xFFFF0000);
+}
+
pn_connection_t *pn_event_connection(pn_event_t *event)
{
return event->connection;
@@ -272,12 +277,18 @@ const char *pn_event_type_name(pn_event_
switch (type) {
case PN_EVENT_NONE:
return "PN_EVENT_NONE";
- case PN_CONNECTION_STATE:
- return "PN_CONNECTION_STATE";
- case PN_SESSION_STATE:
- return "PN_SESSION_STATE";
- case PN_LINK_STATE:
- return "PN_LINK_STATE";
+ case PN_CONNECTION_REMOTE_STATE:
+ return "PN_CONNECTION_REMOTE_STATE";
+ case PN_CONNECTION_LOCAL_STATE:
+ return "PN_CONNECTION_LOCAL_STATE";
+ case PN_SESSION_REMOTE_STATE:
+ return "PN_SESSION_REMOTE_STATE";
+ case PN_SESSION_LOCAL_STATE:
+ return "PN_SESSION_LOCAL_STATE";
+ case PN_LINK_REMOTE_STATE:
+ return "PN_LINK_REMOTE_STATE";
+ case PN_LINK_LOCAL_STATE:
+ return "PN_LINK_LOCAL_STATE";
case PN_LINK_FLOW:
return "PN_LINK_FLOW";
case PN_DELIVERY:
Modified: qpid/proton/trunk/proton-c/src/messenger/messenger.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/messenger.c?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Tue Apr 8 18:14:33
2014
@@ -1217,13 +1217,16 @@ int pn_messenger_process_events(pn_messe
while ((event = pn_collector_peek(messenger->collector))) {
processed++;
switch (pn_event_type(event)) {
- case PN_CONNECTION_STATE:
+ case PN_CONNECTION_REMOTE_STATE:
+ case PN_CONNECTION_LOCAL_STATE:
pn_messenger_process_connection(messenger, event);
break;
- case PN_SESSION_STATE:
+ case PN_SESSION_REMOTE_STATE:
+ case PN_SESSION_LOCAL_STATE:
pn_messenger_process_session(messenger, event);
break;
- case PN_LINK_STATE:
+ case PN_LINK_REMOTE_STATE:
+ case PN_LINK_LOCAL_STATE:
pn_messenger_process_link(messenger, event);
break;
case PN_LINK_FLOW:
Modified: qpid/proton/trunk/proton-c/src/transport/transport.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/transport/transport.c?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/transport/transport.c (original)
+++ qpid/proton/trunk/proton-c/src/transport/transport.c Tue Apr 8 18:14:33
2014
@@ -284,7 +284,8 @@ int pn_transport_bind(pn_transport_t *tr
pn_incref(connection);
if (transport->open_rcvd) {
PN_SET_REMOTE(connection->endpoint.state, PN_REMOTE_ACTIVE);
- pn_event_t *event = pn_collector_put(connection->collector,
PN_CONNECTION_STATE);
+ pn_event_t *event = pn_collector_put(connection->collector,
+ PN_CONNECTION_REMOTE_STATE);
if (event) {
pn_event_init_connection(event, connection);
}
@@ -474,7 +475,8 @@ int pn_do_open(pn_dispatcher_t *disp)
if (conn) {
PN_SET_REMOTE(conn->endpoint.state, PN_REMOTE_ACTIVE);
- pn_event_t *event = pn_collector_put(conn->collector, PN_CONNECTION_STATE);
+ pn_event_t *event = pn_collector_put(conn->collector,
+ PN_CONNECTION_REMOTE_STATE);
if (event) {
pn_event_init_connection(event, conn);
}
@@ -507,7 +509,8 @@ int pn_do_begin(pn_dispatcher_t *disp)
pn_map_channel(transport, disp->channel, ssn);
PN_SET_REMOTE(ssn->endpoint.state, PN_REMOTE_ACTIVE);
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_SESSION_STATE);
+ pn_event_t *event = pn_collector_put(transport->connection->collector,
+ PN_SESSION_REMOTE_STATE);
if (event) {
pn_event_init_session(event, ssn);
}
@@ -681,7 +684,8 @@ int pn_do_attach(pn_dispatcher_t *disp)
link->state.delivery_count = idc;
}
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_LINK_STATE);
+ pn_event_t *event = pn_collector_put(transport->connection->collector,
+ PN_LINK_REMOTE_STATE);
if (event) {
pn_event_init_link(event, link);
}
@@ -951,7 +955,8 @@ int pn_do_detach(pn_dispatcher_t *disp)
if (closed)
{
PN_SET_REMOTE(link->endpoint.state, PN_REMOTE_CLOSED);
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_LINK_STATE);
+ pn_event_t *event = pn_collector_put(transport->connection->collector,
+ PN_LINK_REMOTE_STATE);
if (event) {
pn_event_init_link(event, link);
}
@@ -970,7 +975,8 @@ int pn_do_end(pn_dispatcher_t *disp)
int err = pn_scan_error(disp->args, &ssn->endpoint.remote_condition,
SCAN_ERROR_DEFAULT);
if (err) return err;
PN_SET_REMOTE(ssn->endpoint.state, PN_REMOTE_CLOSED);
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_SESSION_STATE);
+ pn_event_t *event = pn_collector_put(transport->connection->collector,
+ PN_SESSION_REMOTE_STATE);
if (event) {
pn_event_init_session(event, ssn);
}
@@ -986,7 +992,8 @@ int pn_do_close(pn_dispatcher_t *disp)
if (err) return err;
transport->close_rcvd = true;
PN_SET_REMOTE(conn->endpoint.state, PN_REMOTE_CLOSED);
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_CONNECTION_STATE);
+ pn_event_t *event = pn_collector_put(transport->connection->collector,
+ PN_CONNECTION_REMOTE_STATE);
if (event) {
pn_event_init_connection(event, conn);
}
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=1585803&r1=1585802&r2=1585803&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
Tue Apr 8 18:14:33 2014
@@ -28,16 +28,38 @@ package org.apache.qpid.proton.engine;
public interface Event
{
+ public enum Category {
+ PROTOCOL;
+ }
public enum Type {
- CONNECTION_STATE,
- SESSION_STATE,
- LINK_STATE,
- LINK_FLOW,
- DELIVERY,
- TRANSPORT
+ CONNECTION_REMOTE_STATE(Category.PROTOCOL, 1),
+ CONNECTION_LOCAL_STATE(Category.PROTOCOL, 2),
+ SESSION_REMOTE_STATE(Category.PROTOCOL, 3),
+ SESSION_LOCAL_STATE(Category.PROTOCOL, 4),
+ LINK_REMOTE_STATE(Category.PROTOCOL, 5),
+ LINK_LOCAL_STATE(Category.PROTOCOL, 6),
+ LINK_FLOW(Category.PROTOCOL, 7),
+ DELIVERY(Category.PROTOCOL, 8),
+ TRANSPORT(Category.PROTOCOL, 9);
+
+ private int _opcode;
+ private Category _category;
+
+ private Type(Category c, int o)
+ {
+ this._category = c;
+ this._opcode = o;
+ }
+
+ public Category getCategory()
+ {
+ return this._category;
+ }
}
+ Category getCategory();
+
Type getType();
Connection getConnection();
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ConnectionImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ConnectionImpl.java?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ConnectionImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ConnectionImpl.java
Tue Apr 8 18:14:33 2014
@@ -201,7 +201,7 @@ public class ConnectionImpl extends Endp
setRemoteDesiredCapabilities(open.getDesiredCapabilities());
setRemoteOfferedCapabilities(open.getOfferedCapabilities());
setRemoteProperties(open.getProperties());
- EventImpl ev = put(Event.Type.CONNECTION_STATE);
+ EventImpl ev = put(Event.Type.CONNECTION_REMOTE_STATE);
if (ev != null) {
ev.init(this);
}
@@ -582,4 +582,12 @@ public class ConnectionImpl extends Endp
}
}
+ @Override
+ protected void localStateChanged()
+ {
+ EventImpl ev = put(Event.Type.CONNECTION_LOCAL_STATE);
+ if (ev != null) {
+ ev.init(this);
+ }
+ }
}
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImpl.java?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImpl.java
Tue Apr 8 18:14:33 2014
@@ -37,6 +37,8 @@ public abstract class EndpointImpl imple
private EndpointImpl _transportPrev;
private Object _context;
+ protected abstract void localStateChanged();
+
public void open()
{
switch(_localState)
@@ -47,6 +49,7 @@ public abstract class EndpointImpl imple
// TODO
case UNINITIALIZED:
_localState = EndpointState.ACTIVE;
+ localStateChanged();
}
modified();
}
@@ -62,6 +65,7 @@ public abstract class EndpointImpl imple
// TODO
case ACTIVE:
_localState = EndpointState.CLOSED;
+ localStateChanged();
}
modified();
}
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=1585803&r1=1585802&r2=1585803&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
Tue Apr 8 18:14:33 2014
@@ -47,6 +47,11 @@ class EventImpl implements Event
this.type = type;
}
+ public Category getCategory()
+ {
+ return type.getCategory();
+ }
+
public Type getType()
{
return type;
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkImpl.java?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkImpl.java
Tue Apr 8 18:14:33 2014
@@ -27,6 +27,7 @@ import org.apache.qpid.proton.engine.End
import org.apache.qpid.proton.engine.Link;
import org.apache.qpid.proton.amqp.transport.Source;
import org.apache.qpid.proton.amqp.transport.Target;
+import org.apache.qpid.proton.engine.Event;
public abstract class LinkImpl extends EndpointImpl implements Link
{
@@ -373,4 +374,12 @@ public abstract class LinkImpl extends E
return _head;
}
+ @Override
+ protected void localStateChanged()
+ {
+ EventImpl ev = getConnectionImpl().put(Event.Type.LINK_LOCAL_STATE);
+ if (ev != null) {
+ ev.init(this);
+ }
+ }
}
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SenderImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SenderImpl.java?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SenderImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SenderImpl.java
Tue Apr 8 18:14:33 2014
@@ -119,5 +119,4 @@ public class SenderImpl extends LinkImp
advance();
}*/
}
-
}
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
Tue Apr 8 18:14:33 2014
@@ -24,6 +24,7 @@ import java.util.*;
import org.apache.qpid.proton.engine.EndpointState;
import org.apache.qpid.proton.engine.ProtonJSession;
import org.apache.qpid.proton.engine.Session;
+import org.apache.qpid.proton.engine.Event;
public class SessionImpl extends EndpointImpl implements ProtonJSession
{
@@ -182,4 +183,12 @@ public class SessionImpl extends Endpoin
_outgoingDeliveries += delta;
}
+ @Override
+ protected void localStateChanged()
+ {
+ EventImpl ev = getConnectionImpl().put(Event.Type.SESSION_LOCAL_STATE);
+ if (ev != null) {
+ ev.init(this);
+ }
+ }
}
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
Tue Apr 8 18:14:33 2014
@@ -975,7 +975,7 @@ public class TransportImpl extends Endpo
transportSession.setNextIncomingId(begin.getNextOutgoingId());
_remoteSessions.put(channel, transportSession);
- EventImpl ev = _connectionEndpoint.put(Event.Type.SESSION_STATE);
+ EventImpl ev =
_connectionEndpoint.put(Event.Type.SESSION_REMOTE_STATE);
if (ev != null) {
ev.init(session);
}
@@ -1034,7 +1034,7 @@ public class TransportImpl extends Endpo
}
- EventImpl ev = _connectionEndpoint.put(Event.Type.LINK_STATE);
+ EventImpl ev =
_connectionEndpoint.put(Event.Type.LINK_REMOTE_STATE);
if (ev != null) {
ev.init(link);
}
@@ -1108,7 +1108,7 @@ public class TransportImpl extends Endpo
link.getRemoteCondition().copyFrom(detach.getError());
}
- EventImpl ev = _connectionEndpoint.put(Event.Type.LINK_STATE);
+ EventImpl ev =
_connectionEndpoint.put(Event.Type.LINK_REMOTE_STATE);
if (ev != null) {
ev.init(link);
}
@@ -1140,7 +1140,7 @@ public class TransportImpl extends Endpo
session.getRemoteCondition().copyFrom(errorCondition);
}
- EventImpl ev = _connectionEndpoint.put(Event.Type.SESSION_STATE);
+ EventImpl ev =
_connectionEndpoint.put(Event.Type.SESSION_REMOTE_STATE);
if (ev != null) {
ev.init(session);
}
@@ -1160,7 +1160,7 @@ public class TransportImpl extends Endpo
_connectionEndpoint.getRemoteCondition().copyFrom(close.getError());
}
- EventImpl ev =
_connectionEndpoint.put(Event.Type.CONNECTION_STATE);
+ EventImpl ev =
_connectionEndpoint.put(Event.Type.CONNECTION_REMOTE_STATE);
if (ev != null) {
ev.init(_connectionEndpoint);
}
@@ -1365,4 +1365,8 @@ public class TransportImpl extends Endpo
}
}
+ @Override
+ protected void localStateChanged()
+ {
+ }
}
Modified: qpid/proton/trunk/proton-j/src/main/resources/cengine.py
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/resources/cengine.py?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/resources/cengine.py (original)
+++ qpid/proton/trunk/proton-j/src/main/resources/cengine.py Tue Apr 8
18:14:33 2014
@@ -938,9 +938,14 @@ def pn_transport_error(trans):
from org.apache.qpid.proton.engine import Event
-PN_CONNECTION_STATE = Event.Type.CONNECTION_STATE
-PN_SESSION_STATE = Event.Type.SESSION_STATE
-PN_LINK_STATE = Event.Type.LINK_STATE
+PN_EVENT_CATEGORY_PROTOCOL = Event.Category.PROTOCOL
+
+PN_CONNECTION_LOCAL_STATE = Event.Type.CONNECTION_LOCAL_STATE
+PN_CONNECTION_REMOTE_STATE = Event.Type.CONNECTION_REMOTE_STATE
+PN_SESSION_LOCAL_STATE = Event.Type.SESSION_LOCAL_STATE
+PN_SESSION_REMOTE_STATE = Event.Type.SESSION_REMOTE_STATE
+PN_LINK_LOCAL_STATE = Event.Type.LINK_LOCAL_STATE
+PN_LINK_REMOTE_STATE = Event.Type.LINK_REMOTE_STATE
PN_LINK_FLOW = Event.Type.LINK_FLOW
PN_DELIVERY = Event.Type.DELIVERY
PN_TRANSPORT = Event.Type.TRANSPORT
@@ -957,6 +962,9 @@ def pn_collector_peek(coll):
def pn_collector_pop(coll):
coll.pop()
+def pn_collector_free(coll):
+ pass
+
def pn_event_connection(event):
return wrap(event.getConnection(), pn_connection_wrapper)
@@ -972,8 +980,14 @@ def pn_event_delivery(event):
def pn_event_transport(event):
return wrap(event.getTransport(), pn_transport_wrapper)
+def pn_event_class(event):
+ return event.getClass()
+
def pn_event_type(event):
return event.getType()
def pn_event_type_name(etype):
return str(etype)
+
+def pn_event_category(event):
+ return event.getCategory()
Modified: qpid/proton/trunk/tests/python/proton_tests/engine.py
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/tests/python/proton_tests/engine.py?rev=1585803&r1=1585802&r2=1585803&view=diff
==============================================================================
--- qpid/proton/trunk/tests/python/proton_tests/engine.py (original)
+++ qpid/proton/trunk/tests/python/proton_tests/engine.py Tue Apr 8 18:14:33
2014
@@ -2102,7 +2102,7 @@ class EventTest(Test):
self.expect(coll)
c2.open()
self.pump()
- self.expect(coll, Event.CONNECTION_STATE)
+ self.expect(coll, Event.CONNECTION_REMOTE_STATE)
self.pump()
self.expect(coll)
@@ -2113,7 +2113,21 @@ class EventTest(Test):
self.expect(coll)
self.pump()
- self.expect(coll, Event.SESSION_STATE, Event.LINK_STATE)
+ self.expect(coll, Event.SESSION_REMOTE_STATE, Event.LINK_REMOTE_STATE)
+
+ c1.open()
+ ssn2 = c1.session()
+ ssn2.open()
+ rcv = ssn2.receiver("receiver")
+ rcv.open()
+ self.pump()
+ self.expect(coll,
+ Event.CONNECTION_LOCAL_STATE,
+ Event.TRANSPORT,
+ Event.SESSION_LOCAL_STATE,
+ Event.TRANSPORT,
+ Event.LINK_LOCAL_STATE,
+ Event.TRANSPORT)
def testFlowEvents(self):
snd, rcv = self.link("test-link")
@@ -2122,7 +2136,7 @@ class EventTest(Test):
rcv.open()
rcv.flow(10)
self.pump()
- self.expect(coll, Event.LINK_STATE, Event.LINK_FLOW)
+ self.expect(coll, Event.LINK_REMOTE_STATE, Event.LINK_FLOW)
rcv.flow(10)
self.pump()
self.expect(coll, Event.LINK_FLOW)
@@ -2135,7 +2149,7 @@ class EventTest(Test):
rcv.open()
rcv.flow(10)
self.pump()
- self.expect(coll, Event.TRANSPORT, Event.TRANSPORT)
+ self.expect(coll, Event.LINK_LOCAL_STATE, Event.TRANSPORT, Event.TRANSPORT)
snd.delivery("delivery")
snd.send("Hello World!")
snd.advance()
@@ -2143,7 +2157,7 @@ class EventTest(Test):
self.expect(coll)
snd.open()
self.pump()
- self.expect(coll, Event.LINK_STATE, Event.DELIVERY)
+ self.expect(coll, Event.LINK_REMOTE_STATE, Event.DELIVERY)
def testDeliveryEventsDisp(self):
snd, rcv, coll = self.testFlowEvents()
@@ -2151,7 +2165,11 @@ class EventTest(Test):
dlv = snd.delivery("delivery")
snd.send("Hello World!")
assert snd.advance()
- self.expect(coll, Event.TRANSPORT, Event.TRANSPORT, Event.TRANSPORT)
+ self.expect(coll,
+ Event.LINK_LOCAL_STATE,
+ Event.TRANSPORT,
+ Event.TRANSPORT,
+ Event.TRANSPORT)
self.pump()
self.expect(coll)
rdlv = rcv.current
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]