diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/net.h (renamed from include/peer.h) | 18 | ||||
-rw-r--r-- | include/ticker.h | 23 |
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 |