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 <stddef.h>
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00058 typedef int pn_trace_t;
00059
00065 typedef void (*pn_tracer_t)(pn_transport_t *transport, const char *message);
00066
00072 #define PN_TRACE_OFF (0)
00073
00079 #define PN_TRACE_RAW (1)
00080
00086 #define PN_TRACE_FRM (2)
00087
00094 #define PN_TRACE_DRV (4)
00095
00101 #define PN_TRACE_EVT (8)
00102
00124 PN_EXTERN pn_transport_t *pn_transport(void);
00125
00131 PN_EXTERN void pn_transport_set_server(pn_transport_t *transport);
00132
00141 PN_EXTERN void pn_transport_free(pn_transport_t *transport);
00142
00161 PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
00162
00177 PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool required);
00178
00188 PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
00189
00202 PN_EXTERN void pn_transport_require_encryption(pn_transport_t *transport, bool required);
00203
00213 PN_EXTERN bool pn_transport_is_encrypted(pn_transport_t *transport);
00214
00227 PN_EXTERN pn_condition_t *pn_transport_condition(pn_transport_t *transport);
00228
00232 PN_EXTERN pn_error_t *pn_transport_error(pn_transport_t *transport);
00233
00241 PN_EXTERN int pn_transport_bind(pn_transport_t *transport, pn_connection_t *connection);
00242
00250 PN_EXTERN int pn_transport_unbind(pn_transport_t *transport);
00251
00263 PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace);
00264
00277 PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tracer);
00278
00287 PN_EXTERN pn_tracer_t pn_transport_get_tracer(pn_transport_t *transport);
00288
00298 PN_EXTERN void *pn_transport_get_context(pn_transport_t *transport);
00299
00309 PN_EXTERN void pn_transport_set_context(pn_transport_t *transport, void *context);
00310
00317 PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
00318
00330 PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
00331
00345 PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va_list ap);
00346
00359 PN_EXTERN void pn_transport_logf(pn_transport_t *transport, const char *fmt, ...);
00360
00373 PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
00374
00394 PN_EXTERN int pn_transport_set_channel_max(pn_transport_t *transport, uint16_t channel_max);
00395
00404 PN_EXTERN uint16_t pn_transport_remote_channel_max(pn_transport_t *transport);
00405
00414 PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport);
00415
00424 PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t size);
00425
00434 PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport);
00435
00446 PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport);
00447
00458 PN_EXTERN void pn_transport_set_idle_timeout(pn_transport_t *transport, pn_millis_t timeout);
00459
00470 PN_EXTERN pn_millis_t pn_transport_get_remote_idle_timeout(pn_transport_t *transport);
00471
00475 PN_EXTERN ssize_t pn_transport_input(pn_transport_t *transport, const char *bytes, size_t available);
00476
00480 PN_EXTERN ssize_t pn_transport_output(pn_transport_t *transport, char *bytes, size_t size);
00481
00499 PN_EXTERN ssize_t pn_transport_capacity(pn_transport_t *transport);
00500
00513 PN_EXTERN char *pn_transport_tail(pn_transport_t *transport);
00514
00532 PN_EXTERN ssize_t pn_transport_push(pn_transport_t *transport, const char *src, size_t size);
00533
00549 PN_EXTERN int pn_transport_process(pn_transport_t *transport, size_t size);
00550
00561 PN_EXTERN int pn_transport_close_tail(pn_transport_t *transport);
00562
00579 PN_EXTERN ssize_t pn_transport_pending(pn_transport_t *transport);
00580
00595 PN_EXTERN const char *pn_transport_head(pn_transport_t *transport);
00596
00611 PN_EXTERN ssize_t pn_transport_peek(pn_transport_t *transport, char *dst, size_t size);
00612
00626 PN_EXTERN void pn_transport_pop(pn_transport_t *transport, size_t size);
00627
00638 PN_EXTERN int pn_transport_close_head(pn_transport_t *transport);
00639
00648 PN_EXTERN bool pn_transport_quiesced(pn_transport_t *transport);
00649
00655 PN_EXTERN bool pn_transport_head_closed(pn_transport_t *transport);
00656
00662 PN_EXTERN bool pn_transport_tail_closed(pn_transport_t *transport);
00663
00669 PN_EXTERN bool pn_transport_closed(pn_transport_t *transport);
00670
00691 PN_EXTERN pn_timestamp_t pn_transport_tick(pn_transport_t *transport, pn_timestamp_t now);
00692
00701 PN_EXTERN uint64_t pn_transport_get_frames_output(const pn_transport_t *transport);
00702
00711 PN_EXTERN uint64_t pn_transport_get_frames_input(const pn_transport_t *transport);
00712
00720 PN_EXTERN pn_connection_t *pn_transport_connection(pn_transport_t *transport);
00721
00722 #ifdef __cplusplus
00723 }
00724 #endif
00725
00730 #endif