aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kvstorage/libkvstorageclient.h
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2011-10-18 19:36:22 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2011-10-18 19:36:22 +0300
commit9e6a83cbdbe9727dbb7aa508ac4d05ea2e3bd030 (patch)
tree9243b9adfb21c351c35e9b857e906cfaac953313 /lib/kvstorage/libkvstorageclient.h
parent89c8b90f8e52f9274996ffb6a2b0dc1214ea1010 (diff)
downloadrspamd-9e6a83cbdbe9727dbb7aa508ac4d05ea2e3bd030.tar.gz
rspamd-9e6a83cbdbe9727dbb7aa508ac4d05ea2e3bd030.zip
* Add skeleton of libkvstorage API.
Diffstat (limited to 'lib/kvstorage/libkvstorageclient.h')
-rw-r--r--lib/kvstorage/libkvstorageclient.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/lib/kvstorage/libkvstorageclient.h b/lib/kvstorage/libkvstorageclient.h
new file mode 100644
index 000000000..788303adc
--- /dev/null
+++ b/lib/kvstorage/libkvstorageclient.h
@@ -0,0 +1,148 @@
+/* Copyright (c) 2010, Vsevolod Stakhov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Rambler BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#ifndef LIBKVSTORAGECLIENT_H_
+#define LIBKVSTORAGECLIENT_H_
+
+#include <glib.h>
+
+/* Errors */
+enum rspamd_kvstorage_error {
+ KVSTORAGE_ERROR_OK = 0,
+ KVSTORAGE_ERROR_TIMEOUT,
+ KVSTORAGE_ERROR_NOT_EXIST,
+ KVSTORAGE_ERROR_NOT_STORED,
+ KVSTORAGE_ERROR_SERVER_ERROR,
+ KVSTORAGE_ERROR_INTERNAL_ERROR
+};
+
+/* Forwarded definition */
+struct rspamd_kvstorage_connection;
+
+/* Callbacks for async API */
+typedef void (*kvstorage_connect_cb) (enum rspamd_kvstorage_error code,
+ struct rspamd_kvstorage_connection *conn, gpointer user_data);
+typedef void (*kvstorage_read_cb) (enum rspamd_kvstorage_error code, const gpointer key,
+ const gpointer value, gsize datalen, struct rspamd_kvstorage_connection *conn,
+ gpointer user_data);
+typedef void (*kvstorage_write_cb) (enum rspamd_kvstorage_error code, const gpointer key, struct rspamd_kvstorage_connection *conn,
+ gpointer user_data);
+
+/* Asynced API */
+
+/**
+ * Create async connection with rspamd
+ * @param host hostname, ip or unix socket for a server
+ * @param port port number in host byte order
+ * @param tv timeout for operations
+ * @param cb callback
+ * @param ud user data for callback
+ * @param conn target connection
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_connect_async (const gchar *host,
+ guint16 port, struct timeval *tv, kvstorage_connect_cb cb, gpointer ud,
+ struct rspamd_kvstorage_connection **conn);
+
+/**
+ * Read key asynced
+ * @param conn connection structure
+ * @param key key to read
+ * @param cb callback
+ * @param ud user data for callback
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_get_async (struct rspamd_kvstorage_connection *conn,
+ const gpointer key, kvstorage_read_cb cb, gpointer ud);
+
+/**
+ * Write key asynced
+ * @param conn connection structure
+ * @param key key to set
+ * @param value data to write
+ * @param cb callback
+ * @param ud user data for callback
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_set_async (struct rspamd_kvstorage_connection *conn,
+ const gpointer key, const gpointer value, gsize len, guint expire, kvstorage_write_cb cb, gpointer ud);
+
+/**
+ * Delete key asynced
+ * @param conn connection structure
+ * @param key key to delete
+ * @param cb callback
+ * @param ud user data for callback
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_delete_async (struct rspamd_kvstorage_connection *conn,
+ const gpointer key, kvstorage_write_cb cb, gpointer ud);
+
+/**
+ * Close connection
+ * @param conn connection structure
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_close_async (struct rspamd_kvstorage_connection *conn);
+
+/* Synced API */
+/**
+ * Create sync connection with rspamd
+ * @param host hostname, ip or unix socket for a server
+ * @param port port number in host byte order
+ * @param tv timeout for operations
+ * @param conn target connection
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_connect_sync (const gchar *host,
+ guint16 port, struct timeval *tv,
+ struct rspamd_kvstorage_connection **conn);
+
+/**
+ * Read key synced
+ * @param conn connection structure
+ * @param key key to read
+ * @param value value readed
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_get_sync (struct rspamd_kvstorage_connection *conn,
+ const gpointer key, gpointer **value);
+
+/**
+ * Write key synced
+ * @param conn connection structure
+ * @param key key to set
+ * @param value data to write
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_set_sync (struct rspamd_kvstorage_connection *conn,
+ const gpointer key, const gpointer value, gsize len, guint expire);
+
+/**
+ * Delete key synced
+ * @param conn connection structure
+ * @param key key to delete
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_delete_sync (struct rspamd_kvstorage_connection *conn,
+ const gpointer key);
+
+/**
+ * Close connection
+ * @param conn connection structure
+ */
+enum rspamd_kvstorage_error rspamd_kvstorage_close_sync (struct rspamd_kvstorage_connection *conn);
+
+#endif /* LIBKVSTORAGECLIENT_H_ */