aboutsummaryrefslogtreecommitdiff
path: root/src/http/websocket.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/http/websocket.zig')
-rw-r--r--src/http/websocket.zig23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/http/websocket.zig b/src/http/websocket.zig
index 293c67757..6bb433ea3 100644
--- a/src/http/websocket.zig
+++ b/src/http/websocket.zig
@@ -65,13 +65,30 @@ pub const WebsocketHeader = packed struct {
}
pub fn packLength(length: usize) u7 {
- var eight: u7 = 0;
- eight = switch (length) {
+ return switch (length) {
0...126 => @truncate(u7, length),
127...0xFFFF => 126,
else => 127,
};
- return eight;
+ }
+
+ const mask_length = 4;
+ const header_length = 2;
+
+ pub fn lengthByteCount(byte_length: usize) usize {
+ return switch (byte_length) {
+ 0...126 => 0,
+ 127...0xFFFF => @sizeOf(u16),
+ else => @sizeOf(u64),
+ };
+ }
+
+ pub fn frameSize(byte_length: usize) usize {
+ return header_length + byte_length + lengthByteCount(byte_length);
+ }
+
+ pub fn frameSizeIncludingMask(byte_length: usize) usize {
+ return frameSize(byte_length) + mask_length;
}
};