diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2014-04-21 16:25:51 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2014-04-21 16:25:51 +0100 |
commit | 61555065f3d1c8badcc9573691232f1b6e42988c (patch) | |
tree | 563d5b7cb8c468530f7e79c4da0a75267b1184e1 /src/buffer.h | |
parent | ad5bf825b7f33bc10311673991f0cc888e69c0b1 (diff) | |
download | rspamd-61555065f3d1c8badcc9573691232f1b6e42988c.tar.gz rspamd-61555065f3d1c8badcc9573691232f1b6e42988c.zip |
Rework project structure, remove trash files.
Diffstat (limited to 'src/buffer.h')
-rw-r--r-- | src/buffer.h | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/src/buffer.h b/src/buffer.h deleted file mode 100644 index 5ed42bfb3..000000000 --- a/src/buffer.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * @file buffer.h - * Implements buffered IO - */ - -#ifndef RSPAMD_BUFFER_H -#define RSPAMD_BUFFER_H - -#include "config.h" -#include "mem_pool.h" -#include "fstring.h" - -typedef gboolean (*dispatcher_read_callback_t)(f_str_t *in, void *user_data); -typedef gboolean (*dispatcher_write_callback_t)(void *user_data); -typedef void (*dispatcher_err_callback_t)(GError *err, void *user_data); - -/** - * Types of IO handling - */ -enum io_policy { - BUFFER_LINE, /**< call handler when we have line ready */ - BUFFER_CHARACTER, /**< call handler when we have some characters */ - BUFFER_ANY /**< call handler whenever we got data in buffer */ -}; - -/** - * Buffer structure - */ -typedef struct rspamd_buffer_s { - f_str_t *data; /**< buffer logic */ - gchar *pos; /**< current position */ -} rspamd_buffer_t; - -struct rspamd_out_buffer_s { - GString *data; - gboolean allocated; - struct rspamd_out_buffer_s *prev, *next; -}; - -typedef struct rspamd_io_dispatcher_s { - rspamd_buffer_t *in_buf; /**< input buffer */ - struct { - guint pending; - struct rspamd_out_buffer_s *buffers; - } out_buffers; /**< output buffers chain */ - struct timeval *tv; /**< io timeout */ - struct event *ev; /**< libevent io event */ - rspamd_mempool_t *pool; /**< where to store data */ - enum io_policy policy; /**< IO policy */ - size_t nchars; /**< how many chars to read */ - gint fd; /**< descriptor */ - guint32 peer_addr; /**< address of peer for debugging */ - gboolean wanna_die; /**< if dispatcher should be stopped */ - dispatcher_read_callback_t read_callback; /**< read callback */ - dispatcher_write_callback_t write_callback; /**< write callback */ - dispatcher_err_callback_t err_callback; /**< error callback */ - void *user_data; /**< user's data for callbacks */ - gulong default_buf_size; /**< default size for buffering */ - off_t offset; /**< for sendfile use */ - size_t file_size; - gint sendfile_fd; - gboolean in_sendfile; /**< whether buffer is in sendfile mode */ - gboolean strip_eol; /**< strip or not line ends in BUFFER_LINE policy */ - gboolean is_restored; /**< call a callback when dispatcher is restored */ - gboolean half_closed; /**< connection is half closed */ - gboolean want_read; /**< whether we want to read more data */ - struct event_base *ev_base; /**< event base for io operations */ -#ifndef HAVE_SENDFILE - void *map; -#endif -} rspamd_io_dispatcher_t; - -/** - * Creates rspamd IO dispatcher for specified descriptor - * @param fd descriptor to IO - * @param policy IO policy - * @param read_cb read callback handler - * @param write_cb write callback handler - * @param err_cb error callback handler - * @param tv IO timeout - * @param user_data pointer to user's data - * @return new dispatcher object or NULL in case of failure - */ -rspamd_io_dispatcher_t* rspamd_create_dispatcher (struct event_base *base, gint fd, - enum io_policy policy, - dispatcher_read_callback_t read_cb, - dispatcher_write_callback_t write_cb, - dispatcher_err_callback_t err_cb, - struct timeval *tv, - void *user_data); - -/** - * Set new policy for dispatcher - * @param d pointer to dispatcher's object - * @param policy IO policy - * @param nchars number of characters in buffer for character policy - */ -void rspamd_set_dispatcher_policy (rspamd_io_dispatcher_t *d, - enum io_policy policy, - size_t nchars); - -/** - * Write data when it would be possible - * @param d pointer to dispatcher's object - * @param data data to write - * @param len length of data - */ -gboolean rspamd_dispatcher_write (rspamd_io_dispatcher_t *d, - const void *data, - size_t len, gboolean delayed, - gboolean allocated) G_GNUC_WARN_UNUSED_RESULT; - -/** - * Write a GString to dispatcher - * @param d dipatcher object - * @param str string to write - * @param delayed delay write - * @param free_on_write free string after writing to a socket - * @return TRUE if write has been queued successfully - */ -gboolean rspamd_dispatcher_write_string (rspamd_io_dispatcher_t *d, - GString *str, - gboolean delayed, - gboolean free_on_write) G_GNUC_WARN_UNUSED_RESULT; - -/** - * Send specified descriptor to dispatcher - * @param d pointer to dispatcher's object - * @param fd descriptor of file - * @param len length of data - */ -gboolean rspamd_dispatcher_sendfile (rspamd_io_dispatcher_t *d, gint fd, size_t len) G_GNUC_WARN_UNUSED_RESULT; - -/** - * Pause IO events on dispatcher - * @param d pointer to dispatcher's object - */ -void rspamd_dispatcher_pause (rspamd_io_dispatcher_t *d); - -/** - * Restore IO events on dispatcher - * @param d pointer to dispatcher's object - */ -void rspamd_dispatcher_restore (rspamd_io_dispatcher_t *d); - -/** - * Frees dispatcher object - * @param dispatcher pointer to dispatcher's object - */ -void rspamd_remove_dispatcher (rspamd_io_dispatcher_t *dispatcher); - -/** - * Cleanup dispatcher freeing all temporary data - * @param dispatcher pointer to dispatcher's object - */ -void rspamd_dispacther_cleanup (rspamd_io_dispatcher_t *dispatcher); - -#endif |