You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2016/07/14 19:42:21 UTC
[3/3] qpid-proton git commit: PROTON-1258: Make transport events more
consistent on client and server
PROTON-1258: Make transport events more consistent on client and server
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/4a601011
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/4a601011
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/4a601011
Branch: refs/heads/master
Commit: 4a6010110296846e3c77defc0558a45d8792d3b5
Parents: 0340eab
Author: Andrew Stitcher <as...@apache.org>
Authored: Wed Jul 13 19:23:26 2016 -0400
Committer: Andrew Stitcher <as...@apache.org>
Committed: Thu Jul 14 15:17:44 2016 -0400
----------------------------------------------------------------------
proton-c/bindings/cpp/src/messaging_adapter.cpp | 25 +++++++++++++-------
1 file changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4a601011/proton-c/bindings/cpp/src/messaging_adapter.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/messaging_adapter.cpp b/proton-c/bindings/cpp/src/messaging_adapter.cpp
index e74fa4e..4d83871 100644
--- a/proton-c/bindings/cpp/src/messaging_adapter.cpp
+++ b/proton-c/bindings/cpp/src/messaging_adapter.cpp
@@ -221,10 +221,12 @@ void messaging_adapter::on_connection_remote_close(proton_event &pe) {
}
void messaging_adapter::on_connection_remote_open(proton_event &pe) {
- pn_connection_t *conn = pn_event_connection(pe.pn_event());
- connection c(make_wrapper(conn));
+ // Generate on_transport_open event here until we find a better place
transport t(make_wrapper(pn_event_transport(pe.pn_event())));
delegate_.on_transport_open(t);
+
+ pn_connection_t *conn = pn_event_connection(pe.pn_event());
+ connection c(make_wrapper(conn));
delegate_.on_connection_open(c);
if (!is_local_open(pn_connection_state(conn)) && is_local_unititialised(pn_connection_state(conn))) {
pn_connection_open(conn);
@@ -264,15 +266,20 @@ void messaging_adapter::on_link_remote_open(proton_event &pe) {
}
void messaging_adapter::on_transport_tail_closed(proton_event &pe) {
+ pn_transport_t *tspt = pn_event_transport(pe.pn_event());
+ transport t(make_wrapper(tspt));
+
+ // If the connection isn't open generate on_transport_open event
+ // because we didn't generate it yet and the events won't match.
pn_connection_t *conn = pn_event_connection(pe.pn_event());
- if (conn && is_local_open(pn_connection_state(conn))) {
- pn_transport_t *tspt = pn_event_transport(pe.pn_event());
- transport t(make_wrapper(tspt));
- if (pn_condition_is_set(pn_transport_condition(tspt))) {
- delegate_.on_transport_error(t);
- }
- delegate_.on_transport_close(t);
+ if (!conn || is_local_unititialised(pn_connection_state(conn))) {
+ delegate_.on_transport_open(t);
+ }
+
+ if (pn_condition_is_set(pn_transport_condition(tspt))) {
+ delegate_.on_transport_error(t);
}
+ delegate_.on_transport_close(t);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org