aboutsummaryrefslogtreecommitdiff
path: root/include/sockbuf.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sockbuf.h')
-rw-r--r--include/sockbuf.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/sockbuf.h b/include/sockbuf.h
new file mode 100644
index 0000000..664e134
--- /dev/null
+++ b/include/sockbuf.h
@@ -0,0 +1,39 @@
+#pragma once
+#ifndef SOCKBUF_H_
+#define SOCKBUF_H_
+
+#include <inttypes.h>
+
+#define SOCKBUF_BUFLEN 128
+#define SOCKBUF_CLOSED 1
+
+typedef struct {
+ uint8_t buf[SOCKBUF_BUFLEN];
+
+ uint8_t next;
+ uint8_t last;
+
+ int socket;
+ uint8_t flags;
+} sockbuf_t;
+
+/* Initialize a sockbuf from the provided file descriptor. */
+sockbuf_t* init_sockbuf(sockbuf_t* sockbuf, int socket);
+
+/* Writes a null-terminated string to the socket. */
+void sockbuf_write(sockbuf_t* sockbuf, const char* value);
+
+/*
+ * Return the next character of the sockbuf or -1 if EOF was reached.
+ *
+ * This does not advance the pointer.
+ */
+int peek_char(sockbuf_t* sockbuf);
+
+/*
+ * Return and consume the next character of the sockbuf or -1 if EOF was
+ * reached.
+ */
+int get_char(sockbuf_t* sockbuf);
+
+#endif /* SOCKBUF_H_ */