]> jfr.im git - irc/DALnet/libd.git/commitdiff
Forgot too add the ebuf.h header file
authorepiphani <redacted>
Tue, 28 Apr 2009 23:05:17 +0000 (19:05 -0400)
committerepiphani <redacted>
Tue, 28 Apr 2009 23:05:17 +0000 (19:05 -0400)
include/ebuf.h [new file with mode: 0644]

diff --git a/include/ebuf.h b/include/ebuf.h
new file mode 100644 (file)
index 0000000..e379a59
--- /dev/null
@@ -0,0 +1,65 @@
+/* ebuf.h
+ * awiebe, April 2009
+ */
+
+#ifndef EBUF_H
+#define EBUF_H
+
+#define eBufLength(s)     ((s)->length)
+#define eBufClear(s)       ebuf_delete((s), (s)->length)
+
+typedef struct _eBuffer eBuffer;
+typedef struct _eBufUser eBufUser;
+typedef struct _eBuf eBuf;
+typedef struct _eBufBlock eBufBlock;
+typedef struct _eBufUserBlock eBufUserBlock;
+
+struct _eBuf
+{
+       int             length;
+       eBufUser        *head, *tail;
+};
+
+struct _eBuffer
+{
+       eBuffer         *next;
+       int             shared;
+       int             bufsize;
+       int             refcount;
+       char            *end;
+};
+
+struct _eBufBlock
+{
+       int             num;
+       eBuffer         *bufs;
+       eBufBlock       *next;
+};
+
+struct _eBufUser
+{
+       char            *start;
+       eBuffer         *buf;
+       eBufUser        *next;
+};
+
+struct _eBufUserBlock
+{
+       int             num;
+       eBufUser        *users;
+       eBufUserBlock   *next;
+};
+
+/* functions */
+extern int ebuf_init();
+extern eBuffer *ebuf_begin_share(const char *buffer, int len);
+extern int ebuf_end_share(eBuffer *s);
+extern int ebuf_put_share(eBuf *sb, eBuffer *s);
+extern int ebuf_put(eBuf *sb, const char *buffer, int len);
+extern int ebuf_putiov(eBuf *sb, struct iovec *v, int count);
+extern int ebuf_delete(eBuf *sb, int len);
+extern char *ebuf_map(eBuf *sb, int *len);
+extern int ebuf_mapiov(eBuf *sb, struct iovec *iov);
+extern int ebuf_get(eBuf *sb, char *buffer, int len);
+
+#endif