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
00057 typedef int pn_trace_t;
00058
00062 typedef void (*pn_tracer_t)(pn_transport_t *transport, const char *message);
00063
00067 #define PN_TRACE_OFF (0)
00068
00072 #define PN_TRACE_RAW (1)
00073
00077 #define PN_TRACE_FRM (2)
00078
00083 #define PN_TRACE_DRV (4)
00084
00088 #define PN_TRACE_EVT (8)
00089
00112 PN_EXTERN pn_transport_t *pn_transport(void);
00113
00119 PN_EXTERN void pn_transport_set_server(pn_transport_t *transport);
00120
00129 PN_EXTERN void pn_transport_free(pn_transport_t *transport);
00130
00149 PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
00150
00165 PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool required);
00166
00176 PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
00177
00190 PN_EXTERN void pn_transport_require_encryption(pn_transport_t *transport, bool required);
00191
00201 PN_EXTERN bool pn_transport_is_encrypted(pn_transport_t *transport);
00202
00215 PN_EXTERN pn_condition_t *pn_transport_condition(pn_transport_t *transport);
00216
00220 PN_EXTERN pn_error_t *pn_transport_error(pn_transport_t *transport);
00221
00227 PN_EXTERN int pn_transport_bind(pn_transport_t *transport, pn_connection_t *connection);
00228
00234 PN_EXTERN int pn_transport_unbind(pn_transport_t *transport);
00235
00247 PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace);
00248
00261 PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tracer);
00262
00271 PN_EXTERN pn_tracer_t pn_transport_get_tracer(pn_transport_t *transport);
00272
00284 PN_EXTERN void *pn_transport_get_context(pn_transport_t *transport);
00285
00297 PN_EXTERN void pn_transport_set_context(pn_transport_t *transport, void *context);
00298
00305 PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
00306
00318 PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
00319
00333 PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va_list ap);
00334
00347 PN_EXTERN void pn_transport_logf(pn_transport_t *transport, const char *fmt, ...);
00348
00361 PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
00362
00382 PN_EXTERN int pn_transport_set_channel_max(pn_transport_t *transport, uint16_t channel_max);
00383
00392 PN_EXTERN uint16_t pn_transport_remote_channel_max(pn_transport_t *transport);
00393
00402 PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport);
00403
00412 PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t size);
00413
00422 PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport);
00423
00434 PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport);
00435
00446 PN_EXTERN void pn_transport_set_idle_timeout(pn_transport_t *transport, pn_millis_t timeout);
00447
00458 PN_EXTERN pn_millis_t pn_transport_get_remote_idle_timeout(pn_transport_t *transport);
00459
00463 PN_EXTERN ssize_t pn_transport_input(pn_transport_t *transport, const char *bytes, size_t available);
00464
00468 PN_EXTERN ssize_t pn_transport_output(pn_transport_t *transport, char *bytes, size_t size);
00469
00484 PN_EXTERN ssize_t pn_transport_capacity(pn_transport_t *transport);
00485
00496 PN_EXTERN char *pn_transport_tail(pn_transport_t *transport);
00497
00513 PN_EXTERN ssize_t pn_transport_push(pn_transport_t *transport, const char *src, size_t size);
00514
00528 PN_EXTERN int pn_transport_process(pn_transport_t *transport, size_t size);
00529
00538 PN_EXTERN int pn_transport_close_tail(pn_transport_t *transport);
00539
00554 PN_EXTERN ssize_t pn_transport_pending(pn_transport_t *transport);
00555
00568 PN_EXTERN const char *pn_transport_head(pn_transport_t *transport);
00569
00582 PN_EXTERN ssize_t pn_transport_peek(pn_transport_t *transport, char *dst, size_t size);
00583
00595 PN_EXTERN void pn_transport_pop(pn_transport_t *transport, size_t size);
00596
00605 PN_EXTERN int pn_transport_close_head(pn_transport_t *transport);
00606
00613 PN_EXTERN bool pn_transport_quiesced(pn_transport_t *transport);
00614
00618 PN_EXTERN bool pn_transport_head_closed(pn_transport_t *transport);
00619
00623 PN_EXTERN bool pn_transport_tail_closed(pn_transport_t *transport);
00624
00628 PN_EXTERN bool pn_transport_closed(pn_transport_t *transport);
00629
00645 PN_EXTERN pn_timestamp_t pn_transport_tick(pn_transport_t *transport, pn_timestamp_t now);
00646
00653 PN_EXTERN uint64_t pn_transport_get_frames_output(const pn_transport_t *transport);
00654
00661 PN_EXTERN uint64_t pn_transport_get_frames_input(const pn_transport_t *transport);
00662
00670 PN_EXTERN pn_connection_t *pn_transport_connection(pn_transport_t *transport);
00671
00672 #ifdef __cplusplus
00673 }
00674 #endif
00675
00680 #endif