00001 #ifndef PROTON_TRANSPORT_H
00002 #define PROTON_TRANSPORT_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/type_compat.h>
00027 #include <proton/condition.h>
00028 #include <proton/logger.h>
00029 #include <stddef.h>
00030
00031 #ifdef __cplusplus
00032 extern "C" {
00033 #endif
00034
00059 typedef int pn_trace_t;
00060
00066 typedef void (*pn_tracer_t)(pn_transport_t *transport, const char *message);
00067
00073 #define PN_TRACE_OFF (0)
00074
00080 #define PN_TRACE_RAW (1)
00081
00087 #define PN_TRACE_FRM (2)
00088
00095 #define PN_TRACE_DRV (4)
00096
00102 #define PN_TRACE_EVT (8)
00103
00125 PN_EXTERN pn_transport_t *pn_transport(void);
00126
00132 PN_EXTERN void pn_transport_set_server(pn_transport_t *transport);
00133
00142 PN_EXTERN void pn_transport_free(pn_transport_t *transport);
00143
00162 PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
00163
00178 PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool required);
00179
00189 PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
00190
00203 PN_EXTERN void pn_transport_require_encryption(pn_transport_t *transport, bool required);
00204
00214 PN_EXTERN bool pn_transport_is_encrypted(pn_transport_t *transport);
00215
00228 PN_EXTERN pn_condition_t *pn_transport_condition(pn_transport_t *transport);
00229
00241 PN_EXTERN pn_logger_t *pn_transport_logger(pn_transport_t *transport);
00242
00246 PN_EXTERN pn_error_t *pn_transport_error(pn_transport_t *transport);
00247
00255 PN_EXTERN int pn_transport_bind(pn_transport_t *transport, pn_connection_t *connection);
00256
00264 PN_EXTERN int pn_transport_unbind(pn_transport_t *transport);
00265
00277 PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace);
00278
00291 PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tracer);
00292
00301 PN_EXTERN pn_tracer_t pn_transport_get_tracer(pn_transport_t *transport);
00302
00312 PN_EXTERN void *pn_transport_get_context(pn_transport_t *transport);
00313
00323 PN_EXTERN void pn_transport_set_context(pn_transport_t *transport, void *context);
00324
00331 PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
00332
00344 PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
00345
00359 PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va_list ap);
00360
00373 PN_EXTERN void pn_transport_logf(pn_transport_t *transport, const char *fmt, ...);
00374
00387 PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
00388
00408 PN_EXTERN int pn_transport_set_channel_max(pn_transport_t *transport, uint16_t channel_max);
00409
00418 PN_EXTERN uint16_t pn_transport_remote_channel_max(pn_transport_t *transport);
00419
00428 PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport);
00429
00438 PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t size);
00439
00448 PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport);
00449
00460 PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport);
00461
00472 PN_EXTERN void pn_transport_set_idle_timeout(pn_transport_t *transport, pn_millis_t timeout);
00473
00484 PN_EXTERN pn_millis_t pn_transport_get_remote_idle_timeout(pn_transport_t *transport);
00485
00489 PN_EXTERN ssize_t pn_transport_input(pn_transport_t *transport, const char *bytes, size_t available);
00490
00494 PN_EXTERN ssize_t pn_transport_output(pn_transport_t *transport, char *bytes, size_t size);
00495
00513 PN_EXTERN ssize_t pn_transport_capacity(pn_transport_t *transport);
00514
00527 PN_EXTERN char *pn_transport_tail(pn_transport_t *transport);
00528
00546 PN_EXTERN ssize_t pn_transport_push(pn_transport_t *transport, const char *src, size_t size);
00547
00563 PN_EXTERN int pn_transport_process(pn_transport_t *transport, size_t size);
00564
00575 PN_EXTERN int pn_transport_close_tail(pn_transport_t *transport);
00576
00593 PN_EXTERN ssize_t pn_transport_pending(pn_transport_t *transport);
00594
00609 PN_EXTERN const char *pn_transport_head(pn_transport_t *transport);
00610
00625 PN_EXTERN ssize_t pn_transport_peek(pn_transport_t *transport, char *dst, size_t size);
00626
00640 PN_EXTERN void pn_transport_pop(pn_transport_t *transport, size_t size);
00641
00652 PN_EXTERN int pn_transport_close_head(pn_transport_t *transport);
00653
00662 PN_EXTERN bool pn_transport_quiesced(pn_transport_t *transport);
00663
00669 PN_EXTERN bool pn_transport_head_closed(pn_transport_t *transport);
00670
00676 PN_EXTERN bool pn_transport_tail_closed(pn_transport_t *transport);
00677
00683 PN_EXTERN bool pn_transport_closed(pn_transport_t *transport);
00684
00707 PN_EXTERN int64_t pn_transport_tick(pn_transport_t *transport, int64_t now);
00708
00717 PN_EXTERN uint64_t pn_transport_get_frames_output(const pn_transport_t *transport);
00718
00727 PN_EXTERN uint64_t pn_transport_get_frames_input(const pn_transport_t *transport);
00728
00736 PN_EXTERN pn_connection_t *pn_transport_connection(pn_transport_t *transport);
00737
00738 #ifdef __cplusplus
00739 }
00740 #endif
00741
00746 #endif