JabberWerxC  2015.1.1
stream.h
Go to the documentation of this file.
1 
14 #ifndef JABBERWERX_STREAM_H
15 #define JABBERWERX_STREAM_H
16 
17 #include <event2/bufferevent.h>
18 #include "util/htable.h"
19 #include "eventing.h"
20 #include "dom.h"
21 
22 
27 #define JW_STREAM_CONFIG_NAMESPACE "namespace"
28 
32 #define JW_STREAM_CONFIG_DOMAIN "domain"
33 
38 #define JW_STREAM_CONFIG_HOST "host"
39 
46 #define JW_STREAM_CONFIG_PORT "port"
47 
52 #define JW_STREAM_CONFIG_SELECTOR JW_WORKQ_CONFIG_SELECTOR
53 
57 #define JW_STREAM_CONFIG_URI "uri"
58 
62 #define JW_STREAM_CONFIG_LOG_LABEL "loglabel"
63 
71 #define JW_STREAM_CONFIG_QUEUE_SIZE "queuesize"
72 
83 #define JW_STREAM_CONFIG_KEEPALIVE_SECONDS "keepalive_seconds"
84 
93 #define JW_STREAM_CONFIG_TLS_CERTIFICATE_CHAIN_FILENAME "stream_cert_chain_file"
94 
101 #define JW_STREAM_CONFIG_TLS_PRIVATE_KEY_FILENAME "stream_private_key_file"
102 
110 #define JW_STREAM_CONFIG_BUFFEREVENT "socket_bufferevent"
111 
116 #define JW_STREAM_EVENT_OPENED "streamOpened"
117 
121 #define JW_STREAM_EVENT_CLOSED "streamClosed"
122 
126 #define JW_STREAM_EVENT_ELEMRECV "streamElementsReceived"
127 
131 #define JW_STREAM_EVENT_ELEMSENT "streamElementsSent"
132 
136 #define JW_STREAM_EVENT_DESTROYED "streamDestroyed"
137 
138 
140 typedef struct _jw_stream jw_stream;
141 
142 
143 #ifdef __cplusplus
144 extern "C"
145 {
146 #endif
147 
166  jw_stream **stream,
167  jw_err *err);
168 
185  jw_stream **stream,
186  jw_err *err);
187 
202 
243  jw_htable *config,
244  jw_err *err);
245 
266  jw_err *err);
267 
292  jw_dom_node *dom,
293  jw_err *err);
294 
303  jw_errcode close_reason);
304 
315 
326 
336 JABBERWERX_API const char* jw_stream_get_domain(jw_stream *stream);
337 
347 JABBERWERX_API struct event_base* jw_stream_get_selector(jw_stream *stream);
348 
357 
369 
379 
393  const char *name);
394 
403 JABBERWERX_API struct bufferevent *jw_stream_get_bufferevent(jw_stream *stream);
404 
419  struct bufferevent *bev,
420  jw_err *err);
421 
443 JABBERWERX_API struct bufferevent *
445  bufferevent_filter_cb input,
446  bufferevent_filter_cb output,
447  int options,
448  jw_data_free_func free_filter_ctx,
449  void *ctx,
450  jw_err *err);
451 
452 #ifdef __cplusplus
453 }
454 #endif
455 
456 #endif /* JABBERWERX_STREAM_H */
JABBERWERX_API bool jw_stream_socket_create(jw_workq *workq, jw_stream **stream, jw_err *err)
JABBERWERX_API bool jw_stream_open(jw_stream *stream, jw_htable *config, jw_err *err)
#define JABBERWERX_API
Definition: basics.h:32
JABBERWERX_API bool jw_stream_reopen(jw_stream *stream, jw_err *err)
jw_errcode
Definition: basics.h:122
JABBERWERX_API jw_htable * jw_stream_get_config(jw_stream *stream)
JABBERWERX_API struct bufferevent * jw_stream_add_filter(jw_stream *stream, bufferevent_filter_cb input, bufferevent_filter_cb output, int options, jw_data_free_func free_filter_ctx, void *ctx, jw_err *err)
struct _jw_dom_node jw_dom_node
Definition: dom.h:46
JABBERWERX_API struct event_base * jw_stream_get_selector(jw_stream *stream)
JABBERWERX_API jw_event * jw_stream_event(jw_stream *stream, const char *name)
void(* jw_data_free_func)(void *ptr)
Definition: mem.h:85
JABBERWERX_API void jw_stream_close(jw_stream *stream, jw_errcode close_reason)
JABBERWERX_API void jw_stream_destroy(jw_stream *stream)
JABBERWERX_API jw_workq * jw_stream_get_workq(jw_stream *stream)
JABBERWERX_API struct bufferevent * jw_stream_get_bufferevent(jw_stream *stream)
struct jw_workq_t jw_workq
Definition: workq.h:30
JABBERWERX_API bool jw_stream_bosh_create(jw_workq *workq, jw_stream **stream, jw_err *err)
JABBERWERX_API const char * jw_stream_get_stream_id(jw_stream *stream)
JABBERWERX_API bool jw_stream_is_open(jw_stream *stream)
JABBERWERX_API bool jw_stream_send(jw_stream *stream, jw_dom_node *dom, jw_err *err)
JABBERWERX_API const char * jw_stream_get_domain(jw_stream *stream)
Datatypes and functions for representing the Document Object Model (DOM).
struct _jw_htable jw_htable
Definition: htable.h:27
Definition: basics.h:157
JABBERWERX_API bool jw_stream_set_bufferevent(jw_stream *stream, struct bufferevent *bev, jw_err *err)
Functions and data structures for eventing.
struct _jw_stream jw_stream
Definition: stream.h:140
JABBERWERX_API const char * jw_stream_get_namespace(jw_stream *stream)
Datatypes and functions for hashtables.
struct _jw_event_t jw_event
Definition: eventing.h:39