Author: rhs
Date: Thu Jun 19 17:22:43 2014
New Revision: 1603955
URL: http://svn.apache.org/r1603955
Log:
made pn_collector_put take the context as an argument
Modified:
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/engine/event.h
qpid/proton/trunk/proton-c/src/transport/transport.c
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=1603955&r1=1603954&r2=1603955&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/event.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/event.h Thu Jun 19 17:22:43 2014
@@ -220,6 +220,11 @@ PN_EXTERN pn_event_type_t pn_event_type(
PN_EXTERN pn_event_category_t pn_event_category(pn_event_t *event);
/**
+ * Get the context associated with an event.
+ */
+PN_EXTERN void *pn_event_context(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=1603955&r1=1603954&r2=1603955&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Thu Jun 19 17:22:43 2014
@@ -64,11 +64,8 @@ static void pn_endpoint_open(pn_endpoint
// TODO: do we care about the current state?
PN_SET_LOCAL(endpoint->state, PN_LOCAL_ACTIVE);
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) {
- pn_event_init(event, endpoint);
- }
+ pn_collector_put(conn->collector, endpoint_event_map[endpoint->type],
+ endpoint);
pn_modified(conn, endpoint, true);
}
@@ -77,11 +74,8 @@ static void pn_endpoint_close(pn_endpoin
// TODO: do we care about the current state?
PN_SET_LOCAL(endpoint->state, PN_LOCAL_CLOSED);
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) {
- pn_event_init(event, endpoint);
- }
+ pn_collector_put(conn->collector, endpoint_event_map[endpoint->type],
+ endpoint);
pn_modified(conn, endpoint, true);
}
@@ -343,11 +337,8 @@ static bool pni_post_final(pn_endpoint_t
pn_connection_t *conn = pn_ep_get_connection(endpoint);
if (!endpoint->posted_final) {
endpoint->posted_final = true;
- pn_event_t *event = pn_collector_put(conn->collector, type);
- if (event) {
- pn_event_init(event, endpoint);
- return true;
- }
+ pn_event_t *event = pn_collector_put(conn->collector, type, endpoint);
+ if (event) { return true; }
}
return false;
@@ -592,10 +583,8 @@ void pn_modified(pn_connection_t *connec
}
if (emit && connection->transport) {
- pn_event_t *event = pn_collector_put(connection->collector, PN_TRANSPORT);
- if (event) {
- pn_event_init(event, connection->transport);
- }
+ pn_collector_put(connection->collector, PN_TRANSPORT,
+ connection->transport);
}
}
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=1603955&r1=1603954&r2=1603955&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/event.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/event.c Thu Jun 19 17:22:43 2014
@@ -81,12 +81,14 @@ void pn_collector_free(pn_collector_t *c
pn_event_t *pn_event(void);
static void pn_event_initialize(void *obj);
-pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type)
+pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type,
void *context)
{
if (!collector) {
return NULL;
}
+ assert(context);
+
pn_event_t *event;
if (collector->free_head) {
@@ -108,6 +110,8 @@ pn_event_t *pn_collector_put(pn_collecto
}
event->type = type;
+ event->context = context;
+ pn_incref(event->context);
return event;
}
@@ -177,13 +181,6 @@ pn_event_t *pn_event(void)
return event;
}
-void pn_event_init(pn_event_t *event, void *context)
-{
- assert(context);
- event->context = context;
- pn_incref(event->context);
-}
-
pn_event_type_t pn_event_type(pn_event_t *event)
{
return event->type;
@@ -194,6 +191,12 @@ pn_event_category_t pn_event_category(pn
return (pn_event_category_t)(event->type & 0xFFFF0000);
}
+void *pn_event_context(pn_event_t *event)
+{
+ assert(event);
+ return event->context;
+}
+
pn_connection_t *pn_event_connection(pn_event_t *event)
{
pn_session_t *ssn;
Modified: qpid/proton/trunk/proton-c/src/engine/event.h
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/event.h?rev=1603955&r1=1603954&r2=1603955&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/event.h (original)
+++ qpid/proton/trunk/proton-c/src/engine/event.h Thu Jun 19 17:22:43 2014
@@ -22,8 +22,7 @@
*
*/
-pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type);
-
-void pn_event_init(pn_event_t *event, void *context);
+pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type,
+ void *context);
#endif /* event.h */
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=1603955&r1=1603954&r2=1603955&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/transport/transport.c (original)
+++ qpid/proton/trunk/proton-c/src/transport/transport.c Thu Jun 19 17:22:43
2014
@@ -265,11 +265,7 @@ 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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, connection);
- }
+ pn_collector_put(connection->collector, PN_CONNECTION_REMOTE_STATE,
connection);
if (!pn_error_code(transport->error)) {
transport->disp->halt = false;
transport_consume(transport); // blech - testBindAfterOpen
@@ -454,12 +450,7 @@ 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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, conn);
- }
+ pn_collector_put(conn->collector, PN_CONNECTION_REMOTE_STATE, conn);
} else {
transport->disp->halt = true;
}
@@ -488,13 +479,7 @@ int pn_do_begin(pn_dispatcher_t *disp)
ssn->state.incoming_transfer_count = next;
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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, ssn);
- }
-
+ pn_collector_put(transport->connection->collector, PN_SESSION_REMOTE_STATE,
ssn);
return 0;
}
@@ -664,12 +649,7 @@ 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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, link);
- }
-
+ pn_collector_put(transport->connection->collector, PN_LINK_REMOTE_STATE,
link);
return 0;
}
@@ -750,11 +730,7 @@ int pn_do_transfer(pn_dispatcher_t *disp
pn_post_flow(transport, ssn, link);
}
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_DELIVERY);
- if (event) {
- pn_event_init(event, delivery);
- }
-
+ pn_collector_put(transport->connection->collector, PN_DELIVERY, delivery);
return 0;
}
@@ -804,10 +780,7 @@ int pn_do_flow(pn_dispatcher_t *disp)
}
}
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_LINK_FLOW);
- if (event) {
- pn_event_init(event, link);
- }
+ pn_collector_put(transport->connection->collector, PN_LINK_FLOW, link);
}
return 0;
@@ -902,10 +875,7 @@ int pn_do_disposition(pn_dispatcher_t *d
delivery->updated = true;
pn_work_update(transport->connection, delivery);
- pn_event_t *event = pn_collector_put(transport->connection->collector,
PN_DELIVERY);
- if (event) {
- pn_event_init(event, delivery);
- }
+ pn_collector_put(transport->connection->collector, PN_DELIVERY,
delivery);
}
}
@@ -935,11 +905,7 @@ 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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, link);
- }
+ pn_collector_put(transport->connection->collector, PN_LINK_REMOTE_STATE,
link);
} else {
// TODO: implement
}
@@ -955,11 +921,7 @@ 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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, ssn);
- }
+ pn_collector_put(transport->connection->collector, PN_SESSION_REMOTE_STATE,
ssn);
pn_unmap_channel(transport, ssn);
return 0;
}
@@ -972,11 +934,7 @@ 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_REMOTE_STATE);
- if (event) {
- pn_event_init(event, conn);
- }
+ pn_collector_put(transport->connection->collector,
PN_CONNECTION_REMOTE_STATE, conn);
return 0;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]