summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2024-06-19 18:07:47 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2024-06-19 18:07:55 +0200
commit49948b4cc0f73d02a8932c525690a35e8efb6ac5 (patch)
tree1ee33d5393046939a37fdef00b3484e87ff3ec6d /include
parentead2881be92d33076c2104dbd75bad3561f26088 (diff)
add client
Signed-off-by: Lizzy Fleckenstein <lizzy@vlhl.dev>
Diffstat (limited to 'include')
-rw-r--r--include/net.h (renamed from include/peer.h)18
-rw-r--r--include/ticker.h23
2 files changed, 37 insertions, 4 deletions
diff --git a/include/peer.h b/include/net.h
index f6baa4b..fcb12a4 100644
--- a/include/peer.h
+++ b/include/net.h
@@ -2,13 +2,18 @@
//
// SPDX-License-Identifier: AGPL-3.0-or-later
-#ifndef PEER_H
-#define PEER_H
+#ifndef NET_H
+#define NET_H
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#include <poll.h>
+#include <fcntl.h>
+
+#include "str.h"
+
+#define SET_NONBLOCK(X) fcntl((X), F_SETFL, fcntl((X), F_GETFL, 0) | O_NONBLOCK)
#define PEER_INBUFFER_SIZE 0x100000 // 1MB
#define PEER_OUTBUFFER_SIZE 0x200000 // 2MB
@@ -26,16 +31,21 @@ typedef struct {
} in;
// TODO: ring buffer
struct {
- size_t avail;
+ size_t avail;
size_t cursor;
uint8_t *buffer;
} out;
} peer;
+void invalid_pkt(str from, str pkt);
+
+int socket_create(const char *host, const char *port, bool server);
+int socket_accept(int accept_fd);
+
void peer_init(peer *p, int socket);
void peer_free(peer *p);
struct pollfd peer_prepare(peer *p);
-bool peer_ready(peer *p, struct pollfd revents);
+str peer_recv(peer *p, struct pollfd pfd);
bool peer_send(peer *p, void *data, size_t len);
#endif
diff --git a/include/ticker.h b/include/ticker.h
new file mode 100644
index 0000000..f6387c4
--- /dev/null
+++ b/include/ticker.h
@@ -0,0 +1,23 @@
+// SPDX-FileCopyrightText: 2024 Lizzy Fleckenstein <lizzy@vlhl.dev>
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+#ifndef TICKER_H
+#define TICKER_H
+
+#include <time.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#define NANOS 1000000000
+
+typedef struct {
+ struct timespec timestamp;
+ uint64_t freq_nanos;
+} ticker;
+
+void ticker_init(ticker *t, uint64_t f);
+bool ticker_tick(ticker *t, uint64_t *dtime);
+int ticker_timeout(ticker *t);
+
+#endif