You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2014/09/18 22:45:18 UTC
svn commit: r1626084 - in /qpid/proton/trunk/proton-c:
include/proton/messenger.h src/messenger/messenger.c
Author: rhs
Date: Thu Sep 18 20:45:18 2014
New Revision: 1626084
URL: http://svn.apache.org/r1626084
Log:
PROTON-671: patch for settlement modes from dominic
Modified:
qpid/proton/trunk/proton-c/include/proton/messenger.h
qpid/proton/trunk/proton-c/src/messenger/messenger.c
Modified: qpid/proton/trunk/proton-c/include/proton/messenger.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/messenger.h?rev=1626084&r1=1626083&r2=1626084&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/messenger.h Thu Sep 18 20:45:18 2014
@@ -25,6 +25,9 @@
#include <proton/import_export.h>
#include <proton/message.h>
#include <proton/selectable.h>
+#include <proton/condition.h>
+#include <proton/terminus.h>
+#include <proton/link.h>
#ifdef __cplusplus
extern "C" {
@@ -932,6 +935,24 @@ PN_EXTERN int pn_messenger_set_flags(pn_
*/
PN_EXTERN int pn_messenger_get_flags(pn_messenger_t *messenger);
+/**
+ * Set the local sender settle mode for the underlying link.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] mode the sender settle mode
+ */
+PN_EXTERN int pn_messenger_set_snd_settle_mode(pn_messenger_t *messenger,
+ const pn_snd_settle_mode_t mode);
+
+/**
+ * Set the local receiver settle mode for the underlying link.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] mode the receiver settle mode
+ */
+PN_EXTERN int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
+ const pn_rcv_settle_mode_t mode);
+
#ifdef __cplusplus
}
#endif
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=1626084&r1=1626083&r2=1626084&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Thu Sep 18 20:45:18 2014
@@ -101,6 +101,8 @@ struct pn_messenger_t {
int draining; // # links in drain state
int connection_error;
int flags;
+ pn_snd_settle_mode_t snd_settle_mode;
+ pn_rcv_settle_mode_t rcv_settle_mode;
bool blocking;
bool passive;
bool interrupted;
@@ -645,6 +647,8 @@ pn_messenger_t *pn_messenger(const char
m->domain = pn_string(NULL);
m->connection_error = 0;
m->flags = 0;
+ m->snd_settle_mode = PN_SND_SETTLED;
+ m->rcv_settle_mode = PN_RCV_FIRST;
}
return m;
@@ -1681,9 +1685,9 @@ pn_link_t *pn_messenger_link(pn_messenge
if ((sender && pn_messenger_get_outgoing_window(messenger)) ||
(!sender && pn_messenger_get_incoming_window(messenger))) {
- // use explicit settlement via dispositions (not pre-settled)
- pn_link_set_snd_settle_mode( link, PN_SND_UNSETTLED );
- pn_link_set_rcv_settle_mode( link, PN_RCV_SECOND );
+ // use required settlement (defaults to sending pre-settled messages)
+ pn_link_set_snd_settle_mode(link, messenger->snd_settle_mode);
+ pn_link_set_rcv_settle_mode(link, messenger->rcv_settle_mode);
}
// XXX
if (pn_streq(name, "#")) {
@@ -2263,3 +2267,21 @@ PN_EXTERN int pn_messenger_get_flags(pn_
{
return messenger ? messenger->flags : 0;
}
+
+int pn_messenger_set_snd_settle_mode(pn_messenger_t *messenger,
+ const pn_snd_settle_mode_t mode)
+{
+ if (!messenger)
+ return PN_ARG_ERR;
+ messenger->snd_settle_mode = mode;
+ return 0;
+}
+
+int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
+ const pn_rcv_settle_mode_t mode)
+{
+ if (!messenger)
+ return PN_ARG_ERR;
+ messenger->rcv_settle_mode = mode;
+ return 0;
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org