summaryrefslogtreecommitdiffstats
path: root/src/kiro-sb.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kiro-sb.h')
-rw-r--r--src/kiro-sb.h157
1 files changed, 157 insertions, 0 deletions
diff --git a/src/kiro-sb.h b/src/kiro-sb.h
new file mode 100644
index 0000000..45fcf0c
--- /dev/null
+++ b/src/kiro-sb.h
@@ -0,0 +1,157 @@
+/* Copyright (C) 2014-2015 Timo Dritschler <timo.dritschler@kit.edu>
+ (Karlsruhe Institute of Technology)
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by the
+ Free Software Foundation; either version 2.1 of the License, or (at your
+ option) any later version.
+
+ This library is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ details.
+
+ You should have received a copy of the GNU Lesser General Public License along
+ with this library; if not, write to the Free Software Foundation, Inc., 51
+ Franklin St, Fifth Floor, Boston, MA 02110, USA
+*/
+
+/**
+ * SECTION: kiro-sync-buffer
+ * @Short_description: KIRO 'Synchronizing Buffer'
+ * @Title: KiroSb
+ *
+ * KiroSb implements a 'Synchronizing Buffer' that automatically keeps the local
+ * memory content up to date by mirroring the remote SyncBuffers memory content
+ * automatically without any required user interaction
+ */
+
+#ifndef __KIRO_SB_H
+#define __KIRO_SB_H
+
+#include <stdint.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define KIRO_TYPE_SB (kiro_sb_get_type())
+#define KIRO_SB(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), KIRO_TYPE_SB, KiroSb))
+#define KIRO_IS_SB(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), KIRO_TYPE_SB))
+#define KIRO_SB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), KIRO_TYPE_SB, KiroSbClass))
+#define KIRO_IS_SB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), KIRO_TYPE_SB))
+#define KIRO_SB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), KIRO_TYPE_SB, KiroSbClass))
+
+
+typedef struct _KiroSb KiroSb;
+typedef struct _KiroSbClass KiroSbClass;
+typedef struct _KiroSbPrivate KiroSbPrivate;
+
+
+struct _KiroSb {
+
+ GObject parent;
+
+};
+
+
+/**
+ * IbvConnectorInterface:
+ *
+ * Base interface for IbvConnectors.
+ */
+
+struct _KiroSbClass {
+
+ GObjectClass parent_class;
+
+};
+
+
+/* GObject and GType functions */
+/**
+ * kiro_sb_get_type: (skip)
+ * Returns: GType of #KiroSb
+ */
+GType kiro_sb_get_type (void);
+
+
+/**
+ * kiro_sb_new - Creates a new #KiroSb
+ * Returns: (transfer full): A pointer to a new #KiroSb
+ * Description:
+ * Creates a new #KiroSb and returns a pointer to it.
+ * See also:
+ * kiro_sb_free
+ */
+KiroSb* kiro_sb_new (void);
+
+
+/**
+ * kiro_sb_free - 'Destroys' the given #KiroSb
+ * @trb: (transfer none): The #KiroSb that is to be freed
+ * Description:
+ * Clears all underlying memory and frees the object memory.
+ * Note:
+ * The internal memory is also freed when calling this function. If you want
+ * to continue using the raw @sb memory after you call this function, you need
+ * to memcpy() its content using the information optained from
+ * kiro_sb_get_element()
+ * See also:
+ * kiro_sb_new, kiro_sb_get_element
+ */
+void kiro_sb_free (KiroSb *sb);
+
+
+/**
+ * kiro_sb_serve - Allow remote KiroSbs to clone this buffers memory
+ * Returns: A gboolean. TRUE = success. FALSE = fail.
+ * @sb: (transfer none): The #KiroSb to perform this operation on
+ * @size: Size in bytes of the content that will be served
+ * Description:
+ * Allows other remote #KiroSbs to connect to this #KiroSb and clone its
+ * memory.
+ * Note:
+ * A #KiroSb that already 'serves' its content can no longer clone
+ * other remote #KiroSbs.
+ * See also:
+ *
+ */
+gboolean kiro_sb_serve (KiroSb *sb, gulong size);
+
+
+/**
+ * kiro_sb_clone - Clone the content of a remote #KiroSb
+ * Returns: A gboolean. TRUE = connection successful. FALSE = connection failed.
+ * @sb: (transfer none): The #KiroSb to perform this operation on
+ * @address: The InfiniBand address of the remote #KiroSb which should be cloned
+ * @port: The InfiniBand port of the remote #KiroSb which should be cloned
+ * Description:
+ * Connects to the remote #KiroSb given by @address and @port and
+ * continuousely clones its content into the local #KiroSb
+ * Note:
+ * A #KiroSb that clones a remote #KiroSb can no longer start to 'serve' its
+ * content to other remote #KiroSbs
+ * See also:
+ *
+ */
+gboolean kiro_sb_clone (KiroSb *sb, const gchar *address, const gchar *port);
+
+/**
+ * kiro_sb_get_size - Get the size in bytes of the managed memory
+ * Returns: A gulong giving the size of the managed memory in bytes
+ * @sb: (transfer none): The #KiroSb to perform this operation on
+ * Description:
+ * Returns the size in bytes of the content that is being served and/or cloned
+ * from.
+ * Note:
+ * Since #KiroSb uses an internal triple buffer, the value gained from this
+ * function only gives the size of one element from that buffer. The size of
+ * the entire data structure will be different.
+ * See also:
+ *
+ */
+gulong kiro_sb_get_size (KiroSb *sb);
+
+G_END_DECLS
+
+#endif //__kiro_sb_H