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
00159 typedef struct pn_subscription_t pn_subscription_t;
00160
00165 typedef int64_t pn_tracker_t;
00166
00171 typedef enum {
00172 PN_STATUS_UNKNOWN = 0,
00173 PN_STATUS_PENDING = 1,
00176 PN_STATUS_ACCEPTED = 2,
00177 PN_STATUS_REJECTED = 3,
00178 PN_STATUS_RELEASED = 4,
00179 PN_STATUS_MODIFIED = 5,
00180 PN_STATUS_ABORTED = 6,
00181 PN_STATUS_SETTLED = 7
00182 } pn_status_t;
00183
00193 PNX_EXTERN pn_messenger_t *pn_messenger(const char *name);
00194
00201 PNX_EXTERN const char *pn_messenger_name(pn_messenger_t *messenger);
00202
00212 PNX_EXTERN int pn_messenger_set_certificate(pn_messenger_t *messenger, const char *certificate);
00213
00221 PNX_EXTERN const char *pn_messenger_get_certificate(pn_messenger_t *messenger);
00222
00231 PNX_EXTERN int pn_messenger_set_private_key(pn_messenger_t *messenger, const char *private_key);
00232
00239 PNX_EXTERN const char *pn_messenger_get_private_key(pn_messenger_t *messenger);
00240
00249 PNX_EXTERN int pn_messenger_set_password(pn_messenger_t *messenger, const char *password);
00250
00257 PNX_EXTERN const char *pn_messenger_get_password(pn_messenger_t *messenger);
00258
00270 PNX_EXTERN int pn_messenger_set_trusted_certificates(pn_messenger_t *messenger, const char *cert_db);
00271
00278 PNX_EXTERN const char *pn_messenger_get_trusted_certificates(pn_messenger_t *messenger);
00279
00292 PNX_EXTERN int pn_messenger_set_timeout(pn_messenger_t *messenger, int timeout);
00293
00302 PNX_EXTERN int pn_messenger_get_timeout(pn_messenger_t *messenger);
00303
00310 PNX_EXTERN bool pn_messenger_is_blocking(pn_messenger_t *messenger);
00311
00320 PNX_EXTERN int pn_messenger_set_blocking(pn_messenger_t *messenger, bool blocking);
00321
00334 PNX_EXTERN bool pn_messenger_is_passive(pn_messenger_t *messenger);
00335
00346 PNX_EXTERN int pn_messenger_set_passive(pn_messenger_t *messenger, bool passive);
00347
00353 PNX_EXTERN void pn_messenger_free(pn_messenger_t *messenger);
00354
00368 PNX_EXTERN int pn_messenger_errno(pn_messenger_t *messenger);
00369
00381 PNX_EXTERN pn_error_t *pn_messenger_error(pn_messenger_t *messenger);
00382
00398 PNX_EXTERN int pn_messenger_get_outgoing_window(pn_messenger_t *messenger);
00399
00410 PNX_EXTERN int pn_messenger_set_outgoing_window(pn_messenger_t *messenger, int window);
00411
00430 PNX_EXTERN int pn_messenger_get_incoming_window(pn_messenger_t *messenger);
00431
00442 PNX_EXTERN int pn_messenger_set_incoming_window(pn_messenger_t *messenger,
00443 int window);
00444
00453 PNX_EXTERN int pn_messenger_start(pn_messenger_t *messenger);
00454
00469 PNX_EXTERN int pn_messenger_stop(pn_messenger_t *messenger);
00470
00478 PNX_EXTERN bool pn_messenger_stopped(pn_messenger_t *messenger);
00479
00487 PNX_EXTERN pn_subscription_t *pn_messenger_subscribe(pn_messenger_t *messenger, const char *source);
00488
00499 PNX_EXTERN pn_subscription_t *
00500 pn_messenger_subscribe_ttl(pn_messenger_t *messenger, const char *source,
00501 pn_seconds_t timeout);
00502
00512 PNX_EXTERN pn_link_t *pn_messenger_get_link(pn_messenger_t *messenger,
00513 const char *address, bool sender);
00514
00523 PNX_EXTERN void *pn_subscription_get_context(pn_subscription_t *sub);
00524
00531 PNX_EXTERN void pn_subscription_set_context(pn_subscription_t *sub, void *context);
00532
00539 PNX_EXTERN const char *pn_subscription_address(pn_subscription_t *sub);
00540
00551 PNX_EXTERN int pn_messenger_put(pn_messenger_t *messenger, pn_message_t *msg);
00552
00564 PNX_EXTERN pn_status_t pn_messenger_status(pn_messenger_t *messenger, pn_tracker_t tracker);
00565
00577 PNX_EXTERN pn_delivery_t *pn_messenger_delivery(pn_messenger_t *messenger,
00578 pn_tracker_t tracker);
00579
00592 PNX_EXTERN bool pn_messenger_buffered(pn_messenger_t *messenger, pn_tracker_t tracker);
00593
00606 PNX_EXTERN int pn_messenger_settle(pn_messenger_t *messenger, pn_tracker_t tracker, int flags);
00607
00621 PNX_EXTERN pn_tracker_t pn_messenger_outgoing_tracker(pn_messenger_t *messenger);
00622
00633 PNX_EXTERN int pn_messenger_work(pn_messenger_t *messenger, int timeout);
00634
00646 PNX_EXTERN int pn_messenger_interrupt(pn_messenger_t *messenger);
00647
00680 PNX_EXTERN int pn_messenger_send(pn_messenger_t *messenger, int n);
00681
00706 PNX_EXTERN int pn_messenger_recv(pn_messenger_t *messenger, int limit);
00707
00718 PNX_EXTERN int pn_messenger_receiving(pn_messenger_t *messenger);
00719
00734 PNX_EXTERN int pn_messenger_get(pn_messenger_t *messenger, pn_message_t *message);
00735
00749 PNX_EXTERN pn_tracker_t pn_messenger_incoming_tracker(pn_messenger_t *messenger);
00750
00760 PNX_EXTERN pn_subscription_t *pn_messenger_incoming_subscription(pn_messenger_t *messenger);
00761
00765 #define PN_CUMULATIVE (0x1)
00766
00788 PNX_EXTERN int pn_messenger_accept(pn_messenger_t *messenger, pn_tracker_t tracker, int flags);
00789
00811 PNX_EXTERN int pn_messenger_reject(pn_messenger_t *messenger, pn_tracker_t tracker, int flags);
00812
00820 PNX_EXTERN pn_link_t *pn_messenger_tracker_link(pn_messenger_t *messenger,
00821 pn_tracker_t tracker);
00822
00830 PNX_EXTERN int pn_messenger_outgoing(pn_messenger_t *messenger);
00831
00838 PNX_EXTERN int pn_messenger_incoming(pn_messenger_t *messenger);
00839
00902 PNX_EXTERN int pn_messenger_route(pn_messenger_t *messenger, const char *pattern,
00903 const char *address);
00904
00927 PNX_EXTERN int pn_messenger_rewrite(pn_messenger_t *messenger, const char *pattern,
00928 const char *address);
00929
00956 PNX_EXTERN pn_selectable_t *pn_messenger_selectable(pn_messenger_t *messenger);
00957
00964 PNX_EXTERN pn_timestamp_t pn_messenger_deadline(pn_messenger_t *messenger);
00965
00966 #define PN_FLAGS_CHECK_ROUTES \
00967 (0x1)
00971 #define PN_FLAGS_ALLOW_INSECURE_MECHS \
00972 (0x2)
00984 PNX_EXTERN int pn_messenger_set_flags(pn_messenger_t *messenger,
00985 const int flags);
00986
00993 PNX_EXTERN int pn_messenger_get_flags(pn_messenger_t *messenger);
00994
01001 PNX_EXTERN int pn_messenger_set_snd_settle_mode(pn_messenger_t *messenger,
01002 const pn_snd_settle_mode_t mode);
01003
01010 PNX_EXTERN int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
01011 const pn_rcv_settle_mode_t mode);
01012
01019 PNX_EXTERN void pn_messenger_set_tracer(pn_messenger_t *messenger,
01020 pn_tracer_t tracer);
01021
01029 PNX_EXTERN pn_millis_t
01030 pn_messenger_get_remote_idle_timeout(pn_messenger_t *messenger,
01031 const char *address);
01032
01042 PNX_EXTERN int
01043 pn_messenger_set_ssl_peer_authentication_mode(pn_messenger_t *messenger,
01044 const pn_ssl_verify_mode_t mode);
01045
01050 #ifdef __cplusplus
01051 }
01052 #endif
01053
01054 #endif