From 5242ba4f54326dec76a49eedcb4866dee64db33c Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Tue, 29 Apr 2025 13:41:20 +0200 Subject: Use our Assert macro; Added screenshot --- README.md | 12 ++++++++---- build/chatty | Bin 139016 -> 134384 bytes build/server | Bin 44688 -> 40176 bytes screenshot.png | Bin 0 -> 95088 bytes source/protocol.h | 36 ++++++++++++++++++------------------ 5 files changed, 26 insertions(+), 22 deletions(-) create mode 100644 screenshot.png diff --git a/README.md b/README.md index c69eb45..a3ea199 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ ## Overview `chatty` is a terminal chat application. Included is also a server. +
+
+ + ### Client features - users are saved @@ -41,13 +45,13 @@ In another prompt, start a client with ``` # Resources -- terminal library: [Termbox2](https://github.com/termbox/termbox2) -- source code I looked at: +- Terminal library: [Termbox2](https://github.com/termbox/termbox2) +- Source code I looked at: - https://github.com/git-bruh/matrix-tui - https://github.com/NikitaIvanovV/ictree - *mmap & gdb*: [Tsoding - "Why linux has this syscall?" ](https://youtu.be/sFYFuBzu9Ow?si=CX32IzFVA8OPDZvS) - *pthreads*: [C for dummies](https://c-for-dummies.com/blog/?p=5365) - *unicode and wide characters*: [C for dummies](https://c-for-dummies.com/blog/?p=2578) - *sockets*: [Nir Lichtman - Making Minimalist Chat Server in C on Linux](https://www.youtube.com/watch?v=gGfTjKwLQxY) -- syscall manpages `man` -- UTF8 Comprssion: [Casey Muratori - Simple RLE Compressor](https://www.youtube.com/watch?v=kikLEdc3C1c&t=6312s) +- Syscall manpages `man` +- Compression: [Casey Muratori - Simple RLE Compressor](https://www.youtube.com/watch?v=kikLEdc3C1c&t=6312s) diff --git a/build/chatty b/build/chatty index 06f4379..824eff9 100755 Binary files a/build/chatty and b/build/chatty differ diff --git a/build/server b/build/server index 90d2d33..3a11bc7 100755 Binary files a/build/server and b/build/server differ diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..db6d5d9 Binary files /dev/null and b/screenshot.png differ diff --git a/source/protocol.h b/source/protocol.h index f863f0a..5d330d7 100644 --- a/source/protocol.h +++ b/source/protocol.h @@ -204,16 +204,16 @@ recvTextMessage(Arena* msgsArena, u32 fd) // Receive everything but the text so we can know the text's size and act accordingly s32 nrecv = recv(fd, message, TEXTMESSAGE_SIZE, 0); - assert(nrecv != -1); - assert(nrecv == TEXTMESSAGE_SIZE); + Assert(nrecv != -1); + Assert(nrecv == TEXTMESSAGE_SIZE); // Allocate memory for text and receive in that memory u32 text_size = message->len * sizeof(*message->text); ArenaPush(msgsArena, text_size); nrecv = recv(fd, (u8*)&message->text, text_size, 0); - assert(nrecv != -1); - assert(nrecv == (s32)(message->len * sizeof(*message->text))); + Assert(nrecv != -1); + Assert(nrecv == (s32)(message->len * sizeof(*message->text))); return message; } @@ -234,7 +234,7 @@ getMessageSize(HeaderType type) case HEADER_TYPE_INTRODUCTION: size = sizeof(IntroductionMessage); break; case HEADER_TYPE_PRESENCE: size = sizeof(PresenceMessage); break; case HEADER_TYPE_ID: size = sizeof(IDMessage); break; - default: assert(0); + default: Assert(0); } return size; } @@ -245,7 +245,7 @@ recvAnyMessageType(s32 fd, HeaderMessage* header, void *anyMessage, HeaderType t s32 nrecv = recv(fd, header, sizeof(*header), 0); if (nrecv == -1 || nrecv == 0) return nrecv; - assert(nrecv == sizeof(*header)); + Assert(nrecv == sizeof(*header)); s32 size = 0; switch (type) @@ -262,13 +262,13 @@ recvAnyMessageType(s32 fd, HeaderMessage* header, void *anyMessage, HeaderType t TextMessage* message = anyMessage; size = TEXTMESSAGE_SIZE + message->len * sizeof(*message->text); } break; - default: assert(0); break; + default: Assert(0); break; } - assert(header->type == type); + Assert(header->type == type); nrecv = recv(fd, anyMessage, size, 0); - assert(nrecv != -1); - assert(nrecv == size); + Assert(nrecv != -1); + Assert(nrecv == size); return size; } @@ -279,8 +279,8 @@ recvAnyMessage(Arena* arena, s32 fd) { HeaderMessage* header = ArenaPush(arena, sizeof(*header)); s32 nrecv = recv(fd, header, sizeof(*header), 0); - assert(nrecv != -1); - assert(nrecv == sizeof(*header)); + Assert(nrecv != -1); + Assert(nrecv == sizeof(*header)); s32 size = 0; switch (header->type) @@ -300,8 +300,8 @@ recvAnyMessage(Arena* arena, s32 fd) void* message = ArenaPush(arena, size); nrecv = recv(fd, message, size, 0); - assert(nrecv != -1); - assert(nrecv == size); + Assert(nrecv != -1); + Assert(nrecv == size); Message result; result.header = header; @@ -333,7 +333,7 @@ sendAnyMessage(u32 fd, HeaderMessage header, void* anyMessage) s32 nsend = send(fd, &header, sizeof(header), 0); if (nsend == -1) return nsend; LoggingF("sendAnyMessage (%d)|sending "HEADER_FMT"\n", fd, HEADER_ARG(header)); - assert(nsend == sizeof(header)); + Assert(nsend == sizeof(header)); nsend_total = nsend; s32 size = 0; @@ -349,8 +349,8 @@ sendAnyMessage(u32 fd, HeaderMessage header, void* anyMessage) case HEADER_TYPE_TEXT: { nsend = send(fd, anyMessage, TEXTMESSAGE_SIZE, 0); - assert(nsend != -1); - assert(nsend == TEXTMESSAGE_SIZE); + Assert(nsend != -1); + Assert(nsend == TEXTMESSAGE_SIZE); nsend_total += nsend; // set size to remaning text size that should be sent TextMessage* message = (TextMessage*)anyMessage; @@ -366,7 +366,7 @@ sendAnyMessage(u32 fd, HeaderMessage header, void* anyMessage) nsend = send(fd, anyMessage, size, 0); if (nsend == -1) return nsend; - assert(nsend == size); + Assert(nsend == size); nsend_total += nsend; return nsend_total; -- cgit v1.2.3