00001 #ifndef PROTON_MESSENGER_H
00002 #define PROTON_MESSENGER_H 1
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <proton/import_export.h>
00026 #include <proton/message.h>
00027 #include <proton/selectable.h>
00028 #include <proton/link.h>
00029 #include <proton/transport.h>
00030 #include <proton/ssl.h>
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00154 typedef struct pn_messenger_t pn_messenger_t;
00155
00163 typedef struct pn_subscription_t pn_subscription_t;
00164
00169 typedef int64_t pn_tracker_t;
00170
00175 typedef enum {
00176 PN_STATUS_UNKNOWN = 0,
00177 PN_STATUS_PENDING = 1,
00180 PN_STATUS_ACCEPTED = 2,
00181 PN_STATUS_REJECTED = 3,
00182 PN_STATUS_RELEASED = 4,
00183 PN_STATUS_MODIFIED = 5,
00184 PN_STATUS_ABORTED = 6,
00185 PN_STATUS_SETTLED = 7
00186 } pn_status_t;
00187
00197 PNX_EXTERN pn_messenger_t *pn_messenger(const char *name);
00198
00205 PNX_EXTERN const char *pn_messenger_name(pn_messenger_t *messenger);
00206
00216 PNX_EXTERN int pn_messenger_set_certificate(pn_messenger_t *messenger, const char *certificate);
00217
00225 PNX_EXTERN const char *pn_messenger_get_certificate(pn_messenger_t *messenger);
00226
00235 PNX_EXTERN int pn_messenger_set_private_key(pn_messenger_t *messenger, const char *private_key);
00236
00243 PNX_EXTERN const char *pn_messenger_get_private_key(pn_messenger_t *messenger);
00244
00253 PNX_EXTERN int pn_messenger_set_password(pn_messenger_t *messenger, const char *password);
00254
00261 PNX_EXTERN const char *pn_messenger_get_password(pn_messenger_t *messenger);
00262
00274 PNX_EXTERN int pn_messenger_set_trusted_certificates(pn_messenger_t *messenger, const char *cert_db);
00275
00282 PNX_EXTERN const char *pn_messenger_get_trusted_certificates(pn_messenger_t *messenger);
00283
00296 PNX_EXTERN int pn_messenger_set_timeout(pn_messenger_t *messenger, int timeout);
00297
00306 PNX_EXTERN int pn_messenger_get_timeout(pn_messenger_t *messenger);
00307
00314 PNX_EXTERN bool pn_messenger_is_blocking(pn_messenger_t *messenger);
00315
00324 PNX_EXTERN int pn_messenger_set_blocking(pn_messenger_t *messenger, bool blocking);
00325
00338 PNX_EXTERN bool pn_messenger_is_passive(pn_messenger_t *messenger);
00339
00350 PNX_EXTERN int pn_messenger_set_passive(pn_messenger_t *messenger, bool passive);
00351
00357 PNX_EXTERN void pn_messenger_free(pn_messenger_t *messenger);
00358
00372 PNX_EXTERN int pn_messenger_errno(pn_messenger_t *messenger);
00373
00385 PNX_EXTERN pn_error_t *pn_messenger_error(pn_messenger_t *messenger);
00386
00402 PNX_EXTERN int pn_messenger_get_outgoing_window(pn_messenger_t *messenger);
00403
00414 PNX_EXTERN int pn_messenger_set_outgoing_window(pn_messenger_t *messenger, int window);
00415
00434 PNX_EXTERN int pn_messenger_get_incoming_window(pn_messenger_t *messenger);
00435
00446 PNX_EXTERN int pn_messenger_set_incoming_window(pn_messenger_t *messenger,
00447 int window);
00448
00457 PNX_EXTERN int pn_messenger_start(pn_messenger_t *messenger);
00458
00473 PNX_EXTERN int pn_messenger_stop(pn_messenger_t *messenger);
00474
00482 PNX_EXTERN bool pn_messenger_stopped(pn_messenger_t *messenger);
00483
00491 PNX_EXTERN pn_subscription_t *pn_messenger_subscribe(pn_messenger_t *messenger, const char *source);
00492
00503 PNX_EXTERN pn_subscription_t *
00504 pn_messenger_subscribe_ttl(pn_messenger_t *messenger, const char *source,
00505 pn_seconds_t timeout);
00506
00516 PNX_EXTERN pn_link_t *pn_messenger_get_link(pn_messenger_t *messenger,
00517 const char *address, bool sender);
00518
00527 PNX_EXTERN void *pn_subscription_get_context(pn_subscription_t *sub);
00528
00535 PNX_EXTERN void pn_subscription_set_context(pn_subscription_t *sub, void *context);
00536
00543 PNX_EXTERN const char *pn_subscription_address(pn_subscription_t *sub);
00544
00555 PNX_EXTERN int pn_messenger_put(pn_messenger_t *messenger, pn_message_t *msg);
00556
00568 PNX_EXTERN pn_status_t pn_messenger_status(pn_messenger_t *messenger, pn_tracker_t tracker);
00569
00581 PNX_EXTERN pn_delivery_t *pn_messenger_delivery(pn_messenger_t *messenger,
00582 pn_tracker_t tracker);
00583
00596 PNX_EXTERN bool pn_messenger_buffered(pn_messenger_t *messenger, pn_tracker_t tracker);
00597
00610 PNX_EXTERN int pn_messenger_settle(pn_messenger_t *messenger, pn_tracker_t tracker, int flags);
00611
00625 PNX_EXTERN pn_tracker_t pn_messenger_outgoing_tracker(pn_messenger_t *messenger);
00626
00637 PNX_EXTERN int pn_messenger_work(pn_messenger_t *messenger, int timeout);
00638
00650 PNX_EXTERN int pn_messenger_interrupt(pn_messenger_t *messenger);
00651
00684 PNX_EXTERN int pn_messenger_send(pn_messenger_t *messenger, int n);
00685
00710 PNX_EXTERN int pn_messenger_recv(pn_messenger_t *messenger, int limit);
00711
00722 PNX_EXTERN int pn_messenger_receiving(pn_messenger_t *messenger);
00723
00738 PNX_EXTERN int pn_messenger_get(pn_messenger_t *messenger, pn_message_t *message);
00739
00753 PNX_EXTERN pn_tracker_t pn_messenger_incoming_tracker(pn_messenger_t *messenger);
00754
00764 PNX_EXTERN pn_subscription_t *pn_messenger_incoming_subscription(pn_messenger_t *messenger);
00765
00769 #define PN_CUMULATIVE (0x1)
00770
00792 PNX_EXTERN int pn_messenger_accept(pn_messenger_t *messenger, pn_tracker_t tracker, int flags);
00793
00815 PNX_EXTERN int pn_messenger_reject(pn_messenger_t *messenger, pn_tracker_t tracker, int flags);
00816
00824 PNX_EXTERN pn_link_t *pn_messenger_tracker_link(pn_messenger_t *messenger,
00825 pn_tracker_t tracker);
00826
00834 PNX_EXTERN int pn_messenger_outgoing(pn_messenger_t *messenger);
00835
00842 PNX_EXTERN int pn_messenger_incoming(pn_messenger_t *messenger);
00843
00906 PNX_EXTERN int pn_messenger_route(pn_messenger_t *messenger, const char *pattern,
00907 const char *address);
00908
00931 PNX_EXTERN int pn_messenger_rewrite(pn_messenger_t *messenger, const char *pattern,
00932 const char *address);
00933
00960 PNX_EXTERN pn_selectable_t *pn_messenger_selectable(pn_messenger_t *messenger);
00961
00968 PNX_EXTERN pn_timestamp_t pn_messenger_deadline(pn_messenger_t *messenger);
00969
00970 #define PN_FLAGS_CHECK_ROUTES \
00971 (0x1)
00975 #define PN_FLAGS_ALLOW_INSECURE_MECHS \
00976 (0x2)
00988 PNX_EXTERN int pn_messenger_set_flags(pn_messenger_t *messenger,
00989 const int flags);
00990
00997 PNX_EXTERN int pn_messenger_get_flags(pn_messenger_t *messenger);
00998
01005 PNX_EXTERN int pn_messenger_set_snd_settle_mode(pn_messenger_t *messenger,
01006 const pn_snd_settle_mode_t mode);
01007
01014 PNX_EXTERN int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
01015 const pn_rcv_settle_mode_t mode);
01016
01023 PNX_EXTERN void pn_messenger_set_tracer(pn_messenger_t *messenger,
01024 pn_tracer_t tracer);
01025
01033 PNX_EXTERN pn_millis_t
01034 pn_messenger_get_remote_idle_timeout(pn_messenger_t *messenger,
01035 const char *address);
01036
01046 PNX_EXTERN int
01047 pn_messenger_set_ssl_peer_authentication_mode(pn_messenger_t *messenger,
01048 const pn_ssl_verify_mode_t mode);
01049
01054 #ifdef __cplusplus
01055 }
01056 #endif
01057
01058 #endif