@@ -90,6 +90,13 @@ typedef struct pn_disposition_t pn_disposition_t;
9090 */
9191#define PN_MODIFIED (0x0000000000000027)
9292
93+ /**
94+ * The PN_DECLARED delivery state is a terminal state
95+ * indicating that a transaction has been declared and indicating its
96+ * transaction identifier.
97+ */
98+ #define PN_DECLARED (0x0000000000000033)
99+
93100/**
94101 * The PN_TRANSACTIONAL_STATE delivery state is a non terminal state
95102 * indicating the transactional state of a delivery.
@@ -254,6 +261,13 @@ typedef struct pn_rejected_disposition_t pn_rejected_disposition_t;
254261 */
255262typedef struct pn_modified_disposition_t pn_modified_disposition_t ;
256263
264+ /**
265+ * A transaction declared delivery disposition
266+ *
267+ * This represents a transaction declared disposition.
268+ */
269+ typedef struct pn_declared_disposition_t pn_declared_disposition_t ;
270+
257271/**
258272 * A transactional delivery disposition
259273 *
@@ -304,6 +318,15 @@ PN_EXTERN pn_rejected_disposition_t *pn_rejected_disposition(pn_disposition_t *d
304318 */
305319PN_EXTERN pn_modified_disposition_t * pn_modified_disposition (pn_disposition_t * disposition );
306320
321+ /**
322+ * Convert a delivery disposition to a transaction declared disposition
323+ *
324+ * @param[in] disposition delivery disposition object
325+ * @return a pointer to the transaction declared disposition or NULL
326+ * if the disposition is not that type
327+ */
328+ PN_EXTERN pn_declared_disposition_t * pn_declared_disposition (pn_disposition_t * disposition );
329+
307330/**
308331 * Convert a delivery disposition to a transactional disposition
309332 *
@@ -441,9 +464,24 @@ PN_EXTERN void pn_modified_disposition_set_undeliverable(pn_modified_disposition
441464 */
442465PN_EXTERN pn_data_t * pn_modified_disposition_annotations (pn_modified_disposition_t * disposition );
443466
467+ /**
468+ * Get the transaction id for a transaction declared disposition
469+ *
470+ * @param[in] disposition a transaction declared disposition object
471+ * @return the transaction id
472+ */
473+ PN_EXTERN pn_bytes_t pn_declared_disposition_get_id (pn_declared_disposition_t * disposition );
474+
475+ /**
476+ * Set the transaction id for a transaction declared disposition
477+ *
478+ * @param[in] disposition a transactional disposition object
479+ * @param[in] id the transaction id
480+ */
481+ PN_EXTERN void pn_declared_disposition_set_id (pn_declared_disposition_t * disposition , pn_bytes_t id );
444482
445483/**
446- * Get the transaction id for a transactional disposition
484+ * Get the transaction id for a transaction declared disposition
447485 *
448486 * @param[in] disposition a transactional disposition object
449487 * @return the transaction id
0 commit comments