1 #ifndef PROTON_ENGINE_H
2 #define PROTON_ENGINE_H 1
30 #include <sys/types.h>
91 #ifndef SWIG // older versions of SWIG choke on this:
100 #define PN_LOCAL_UNINIT (1)
101 #define PN_LOCAL_ACTIVE (2)
102 #define PN_LOCAL_CLOSED (4)
103 #define PN_REMOTE_UNINIT (8)
104 #define PN_REMOTE_ACTIVE (16)
105 #define PN_REMOTE_CLOSED (32)
107 #define PN_LOCAL_MASK (PN_LOCAL_UNINIT | PN_LOCAL_ACTIVE | PN_LOCAL_CLOSED)
108 #define PN_REMOTE_MASK (PN_REMOTE_UNINIT | PN_REMOTE_ACTIVE | PN_REMOTE_CLOSED)
116 #define PN_RECEIVED (0x0000000000000023)
117 #define PN_ACCEPTED (0x0000000000000024)
118 #define PN_REJECTED (0x0000000000000025)
119 #define PN_RELEASED (0x0000000000000026)
120 #define PN_MODIFIED (0x0000000000000027)
124 #define PN_TRACE_OFF (0)
125 #define PN_TRACE_RAW (1)
126 #define PN_TRACE_FRM (2)
127 #define PN_TRACE_DRV (4)
PN_EXTERN pn_snd_settle_mode_t pn_link_remote_snd_settle_mode(pn_link_t *link)
PN_EXTERN pn_condition_t * pn_session_condition(pn_session_t *session)
pn_durability_t
Definition: engine.h:57
PN_EXTERN void pn_link_drained(pn_link_t *sender)
PN_EXTERN pn_seconds_t pn_terminus_get_timeout(pn_terminus_t *terminus)
PN_EXTERN void pn_transport_set_idle_timeout(pn_transport_t *transport, pn_millis_t timeout)
PN_EXTERN pn_data_t * pn_condition_info(pn_condition_t *condition)
PN_EXTERN void pn_session_close(pn_session_t *session)
uint32_t pn_millis_t
Definition: types.h:39
PN_EXTERN pn_terminus_t * pn_link_target(pn_link_t *link)
PN_EXTERN pn_condition_t * pn_session_remote_condition(pn_session_t *session)
uint32_t pn_seconds_t
Definition: types.h:40
PN_EXTERN void pn_link_set_snd_settle_mode(pn_link_t *link, pn_snd_settle_mode_t)
int pn_trace_t
Definition: engine.h:122
struct pn_connection_t pn_connection_t
Connection.
Definition: engine.h:45
PN_EXTERN bool pn_delivery_partial(pn_delivery_t *delivery)
PN_EXTERN pn_data_t * pn_connection_offered_capabilities(pn_connection_t *connection)
const char * bytes
Definition: engine.h:88
PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t size)
struct pn_delivery_tag_t pn_delivery_tag_t
PN_EXTERN int pn_transport_close_tail(pn_transport_t *transport)
Indicate that the input has reached End Of Stream (EOS).
PN_EXTERN pn_link_t * pn_delivery_link(pn_delivery_t *delivery)
PN_EXTERN pn_condition_t * pn_link_condition(pn_link_t *link)
PN_EXTERN bool pn_delivery_writable(pn_delivery_t *delivery)
PN_EXTERN bool pn_link_advance(pn_link_t *link)
pn_rcv_settle_mode_t
Definition: engine.h:78
PN_EXTERN uint64_t pn_disposition_get_section_offset(pn_disposition_t *disposition)
PN_EXTERN void pn_link_set_context(pn_link_t *link, void *context)
struct pn_link_t pn_link_t
Link.
Definition: engine.h:47
PN_EXTERN pn_delivery_t * pn_unsettled_next(pn_delivery_t *delivery)
PN_EXTERN void pn_connection_set_context(pn_connection_t *connection, void *context)
Assign a new application context to the connection.
PN_EXTERN int pn_condition_redirect_port(pn_condition_t *condition)
PN_EXTERN pn_link_t * pn_link_next(pn_link_t *link, pn_state_t state)
Retrieve the next Link that matches the given state mask.
PN_EXTERN int pn_link_unsettled(pn_link_t *link)
PN_EXTERN void pn_delivery_clear(pn_delivery_t *delivery)
PN_EXTERN void pn_connection_reset(pn_connection_t *connection)
PN_EXTERN ssize_t pn_transport_pending(pn_transport_t *transport)
Report the number of pending output bytes following the transport's head pointer. ...
PN_EXTERN int pn_condition_set_name(pn_condition_t *condition, const char *name)
struct pn_terminus_t pn_terminus_t
Definition: engine.h:48
PN_EXTERN pn_error_t * pn_session_error(pn_session_t *session)
PN_EXTERN pn_state_t pn_session_state(pn_session_t *session)
PN_EXTERN void pn_delivery_set_context(pn_delivery_t *delivery, void *context)
PN_EXTERN bool pn_delivery_updated(pn_delivery_t *delivery)
PN_EXTERN bool pn_condition_is_redirect(pn_condition_t *condition)
PN_EXTERN void pn_link_close(pn_link_t *sender)
PN_EXTERN pn_condition_t * pn_connection_remote_condition(pn_connection_t *connection)
PN_EXTERN uint64_t pn_transport_get_frames_input(const pn_transport_t *transport)
PN_EXTERN pn_state_t pn_link_state(pn_link_t *link)
PN_EXTERN pn_session_t * pn_session_head(pn_connection_t *connection, pn_state_t state)
Retrieve the first Session that matches the given state mask.
PN_EXTERN ssize_t pn_transport_output(pn_transport_t *transport, char *bytes, size_t size)
PN_EXTERN uint64_t pn_delivery_remote_state(pn_delivery_t *delivery)
PN_EXTERN pn_connection_t * pn_connection(void)
Factory to construct a new Connection.
PN_EXTERN void pn_link_open(pn_link_t *sender)
PN_EXTERN int pn_transport_unbind(pn_transport_t *transport)
PN_EXTERN pn_delivery_t * pn_unsettled_head(pn_link_t *link)
PN_EXTERN char * pn_transport_tail(pn_transport_t *transport)
Return the transport's tail pointer.
PN_EXTERN int pn_condition_set_description(pn_condition_t *condition, const char *description)
PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport)
PN_EXTERN const char * pn_transport_head(pn_transport_t *transport)
Return the transport's head pointer.
PN_EXTERN bool pn_condition_is_set(pn_condition_t *condition)
PN_EXTERN const char * pn_connection_get_hostname(pn_connection_t *connection)
PN_EXTERN pn_link_t * pn_receiver(pn_session_t *session, const char *name)
PN_EXTERN uint64_t pn_transport_get_frames_output(const pn_transport_t *transport)
PN_EXTERN int pn_terminus_set_type(pn_terminus_t *terminus, pn_terminus_type_t type)
PN_EXTERN void pn_link_offered(pn_link_t *sender, int credit)
PN_EXTERN pn_data_t * pn_connection_remote_offered_capabilities(pn_connection_t *connection)
PN_EXTERN pn_data_t * pn_disposition_annotations(pn_disposition_t *disposition)
PN_EXTERN void pn_delivery_settle(pn_delivery_t *delivery)
PN_EXTERN pn_connection_t * pn_session_connection(pn_session_t *session)
PN_EXTERN ssize_t pn_transport_capacity(pn_transport_t *transport)
Report the amount of free space for input following the transport's tail pointer. ...
PN_EXTERN void * pn_link_get_context(pn_link_t *link)
pn_terminus_type_t
Definition: engine.h:51
PN_EXTERN int pn_terminus_set_durability(pn_terminus_t *terminus, pn_durability_t durability)
PN_EXTERN void pn_connection_set_hostname(pn_connection_t *connection, const char *hostname)
PN_EXTERN uint64_t pn_delivery_local_state(pn_delivery_t *delivery)
PN_EXTERN pn_session_t * pn_session_next(pn_session_t *session, pn_state_t state)
Retrieve the next Session that matches the given state mask.
PN_EXTERN void pn_condition_clear(pn_condition_t *condition)
PN_EXTERN int pn_terminus_set_distribution_mode(pn_terminus_t *terminus, pn_distribution_mode_t m)
PN_EXTERN int pn_terminus_set_expiry_policy(pn_terminus_t *terminus, pn_expiry_policy_t policy)
PN_EXTERN void pn_connection_open(pn_connection_t *connection)
PN_EXTERN int pn_transport_push(pn_transport_t *transport, const char *src, size_t size)
Pushes the supplied bytes into the tail of the transport.
PN_EXTERN bool pn_disposition_is_undeliverable(pn_disposition_t *disposition)
PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace)
PN_EXTERN pn_delivery_t * pn_link_current(pn_link_t *link)
PN_EXTERN pn_disposition_t * pn_delivery_remote(pn_delivery_t *delivery)
PN_EXTERN void pn_connection_close(pn_connection_t *connection)
PN_EXTERN void pn_connection_set_container(pn_connection_t *connection, const char *container)
PN_EXTERN pn_terminus_t * pn_link_source(pn_link_t *link)
PN_EXTERN const char * pn_connection_get_container(pn_connection_t *connection)
explicit disposition required
Definition: engine.h:80
PN_EXTERN pn_data_t * pn_connection_remote_desired_capabilities(pn_connection_t *connection)
PN_EXTERN void pn_transport_free(pn_transport_t *transport)
PN_EXTERN size_t pn_delivery_pending(pn_delivery_t *delivery)
PN_EXTERN ssize_t pn_link_recv(pn_link_t *receiver, char *bytes, size_t n)
struct pn_error_t pn_error_t
Definition: error.h:32
PN_EXTERN int pn_link_available(pn_link_t *link)
PN_EXTERN pn_delivery_t * pn_work_head(pn_connection_t *connection)
Extracts the first delivery on the connection that has pending operations.
PN_EXTERN int pn_transport_peek(pn_transport_t *transport, char *dst, size_t size)
Copies ::size bytes from the head of the transport to the ::dst pointer.
PN_EXTERN pn_error_t * pn_connection_error(pn_connection_t *connection)
PN_EXTERN void pn_link_free(pn_link_t *sender)
PN_EXTERN pn_data_t * pn_connection_remote_properties(pn_connection_t *connection)
pn_snd_settle_mode_t
Definition: engine.h:73
PN_EXTERN pn_data_t * pn_terminus_capabilities(pn_terminus_t *terminus)
struct pn_data_t pn_data_t
Definition: codec.h:97
PN_EXTERN void pn_delivery_dump(pn_delivery_t *delivery)
PN_EXTERN pn_expiry_policy_t pn_terminus_get_expiry_policy(pn_terminus_t *terminus)
PN_EXTERN pn_error_t * pn_transport_error(pn_transport_t *transport)
PN_EXTERN bool pn_delivery_readable(pn_delivery_t *delivery)
PN_EXTERN uint32_t pn_disposition_get_section_number(pn_disposition_t *disposition)
PN_EXTERN const char * pn_connection_remote_hostname(pn_connection_t *connection)
PN_EXTERN pn_session_t * pn_link_session(pn_link_t *link)
PN_EXTERN pn_data_t * pn_connection_properties(pn_connection_t *connection)
PN_EXTERN void pn_session_set_incoming_capacity(pn_session_t *ssn, size_t capacity)
PN_EXTERN const char * pn_terminus_get_address(pn_terminus_t *terminus)
PN_EXTERN uint64_t pn_disposition_type(pn_disposition_t *disposition)
PN_EXTERN void pn_session_free(pn_session_t *session)
PN_EXTERN pn_terminus_t * pn_link_remote_target(pn_link_t *link)
pn_expiry_policy_t
Definition: engine.h:62
PN_EXTERN void * pn_session_get_context(pn_session_t *session)
PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport)
PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport)
PN_EXTERN size_t pn_session_get_incoming_capacity(pn_session_t *ssn)
struct pn_disposition_t pn_disposition_t
Definition: engine.h:83
PN_EXTERN bool pn_terminus_is_dynamic(pn_terminus_t *terminus)
PN_EXTERN void * pn_connection_get_context(pn_connection_t *connection)
Access the application context that is associated with the connection.
PN_EXTERN pn_distribution_mode_t pn_terminus_get_distribution_mode(const pn_terminus_t *terminus)
PN_EXTERN int pn_terminus_set_dynamic(pn_terminus_t *terminus, bool dynamic)
struct pn_condition_t pn_condition_t
Definition: engine.h:49
PN_EXTERN pn_link_t * pn_link_head(pn_connection_t *connection, pn_state_t state)
Retrieve the first Link that matches the given state mask.
PN_EXTERN pn_state_t pn_connection_state(pn_connection_t *connection)
Retrieve the state of the connection.
PN_EXTERN pn_disposition_t * pn_delivery_local(pn_delivery_t *delivery)
struct pn_transport_t pn_transport_t
Definition: engine.h:44
PN_EXTERN bool pn_disposition_is_failed(pn_disposition_t *disposition)
PN_EXTERN pn_data_t * pn_terminus_filter(pn_terminus_t *terminus)
PN_EXTERN pn_transport_t * pn_transport(void)
Factory for creating a transport.
PN_EXTERN void pn_link_set_rcv_settle_mode(pn_link_t *link, pn_rcv_settle_mode_t)
PN_EXTERN const char * pn_condition_redirect_host(pn_condition_t *condition)
PN_EXTERN bool pn_transport_quiesced(pn_transport_t *transport)
PN_EXTERN void pn_session_open(pn_session_t *session)
PN_EXTERN const char * pn_condition_get_name(pn_condition_t *condition)
PN_EXTERN int pn_transport_bind(pn_transport_t *transport, pn_connection_t *connection)
Binds the transport to an AMQP connection endpoint.
implicitly settle rcvd xfers
Definition: engine.h:79
PN_EXTERN bool pn_delivery_settled(pn_delivery_t *delivery)
PN_EXTERN void pn_disposition_set_failed(pn_disposition_t *disposition, bool failed)
PN_EXTERN int pn_transport_process(pn_transport_t *transport, size_t size)
Process input data following the tail pointer.
PN_EXTERN ssize_t pn_transport_input(pn_transport_t *transport, const char *bytes, size_t available)
PN_EXTERN pn_error_t * pn_link_error(pn_link_t *link)
PN_EXTERN pn_condition_t * pn_disposition_condition(pn_disposition_t *disposition)
PN_EXTERN int pn_transport_close_head(pn_transport_t *transport)
Indicate that the output has closed.
int pn_state_t
encodes the state of an endpoint
Definition: engine.h:98
PN_EXTERN const char * pn_connection_remote_container(pn_connection_t *connection)
PN_EXTERN pn_delivery_tag_t pn_delivery_tag(pn_delivery_t *delivery)
PN_EXTERN pn_condition_t * pn_connection_condition(pn_connection_t *connection)
PN_EXTERN pn_durability_t pn_terminus_get_durability(pn_terminus_t *terminus)
PN_EXTERN void pn_link_drain(pn_link_t *receiver, int credit)
PN_EXTERN pn_session_t * pn_session(pn_connection_t *connection)
Factory for creating a new session on the connection.
pn_distribution_mode_t
Definition: engine.h:68
PN_EXTERN bool pn_link_is_sender(pn_link_t *link)
PN_EXTERN void pn_session_set_context(pn_session_t *session, void *context)
PN_EXTERN pn_data_t * pn_terminus_outcomes(pn_terminus_t *terminus)
PN_EXTERN void pn_link_flow(pn_link_t *receiver, int credit)
PN_EXTERN size_t pn_session_outgoing_bytes(pn_session_t *ssn)
PN_EXTERN pn_timestamp_t pn_transport_tick(pn_transport_t *transport, pn_timestamp_t now)
Process any pending transport timer events.
PN_EXTERN int pn_terminus_set_address(pn_terminus_t *terminus, const char *address)
PN_EXTERN pn_terminus_t * pn_link_remote_source(pn_link_t *link)
PN_EXTERN int pn_link_credit(pn_link_t *link)
PN_EXTERN pn_terminus_type_t pn_terminus_get_type(pn_terminus_t *terminus)
PN_EXTERN int pn_terminus_set_timeout(pn_terminus_t *terminus, pn_seconds_t)
PN_EXTERN void pn_transport_pop(pn_transport_t *transport, size_t size)
Removes ::size bytes of output from the pending output queue following the transport's head pointer...
PN_EXTERN pn_delivery_t * pn_work_next(pn_delivery_t *delivery)
Get the next delivery on the connection that needs has pending operations.
#define PN_EXTERN
Definition: import_export.h:53
PN_EXTERN void pn_delivery_update(pn_delivery_t *delivery, uint64_t state)
PN_EXTERN pn_data_t * pn_disposition_data(pn_disposition_t *disposition)
PN_EXTERN void pn_disposition_set_section_offset(pn_disposition_t *disposition, uint64_t section_offset)
PN_EXTERN void * pn_delivery_get_context(pn_delivery_t *delivery)
size_t size
Definition: engine.h:87
PN_EXTERN int pn_link_queued(pn_link_t *link)
PN_EXTERN const char * pn_link_name(pn_link_t *link)
PN_EXTERN pn_delivery_t * pn_delivery(pn_link_t *link, pn_delivery_tag_t tag)
PN_EXTERN void pn_disposition_set_section_number(pn_disposition_t *disposition, uint32_t section_number)
PN_EXTERN const char * pn_condition_get_description(pn_condition_t *condition)
PN_EXTERN pn_millis_t pn_transport_get_remote_idle_timeout(pn_transport_t *transport)
PN_EXTERN pn_snd_settle_mode_t pn_link_snd_settle_mode(pn_link_t *link)
int64_t pn_timestamp_t
Definition: types.h:41
PN_EXTERN size_t pn_session_incoming_bytes(pn_session_t *ssn)
PN_EXTERN pn_rcv_settle_mode_t pn_link_rcv_settle_mode(pn_link_t *link)
PN_EXTERN ssize_t pn_link_send(pn_link_t *sender, const char *bytes, size_t n)
PN_EXTERN pn_condition_t * pn_link_remote_condition(pn_link_t *link)
PN_EXTERN pn_rcv_settle_mode_t pn_link_remote_rcv_settle_mode(pn_link_t *link)
struct pn_session_t pn_session_t
Session.
Definition: engine.h:46
PN_EXTERN void pn_connection_free(pn_connection_t *connection)
PN_EXTERN bool pn_link_is_receiver(pn_link_t *link)
PN_EXTERN pn_data_t * pn_terminus_properties(pn_terminus_t *terminus)
struct pn_delivery_t pn_delivery_t
Definition: engine.h:84
PN_EXTERN int pn_terminus_copy(pn_terminus_t *terminus, pn_terminus_t *src)
PN_EXTERN pn_link_t * pn_sender(pn_session_t *session, const char *name)
PN_EXTERN void pn_disposition_set_undeliverable(pn_disposition_t *disposition, bool undeliverable)
PN_EXTERN pn_data_t * pn_connection_desired_capabilities(pn_connection_t *connection)