aboutsummaryrefslogtreecommitdiff
path: root/src/deps
diff options
context:
space:
mode:
Diffstat (limited to 'src/deps')
-rw-r--r--src/deps/uws.zig43
1 files changed, 34 insertions, 9 deletions
diff --git a/src/deps/uws.zig b/src/deps/uws.zig
index 08037a890..48c93ab53 100644
--- a/src/deps/uws.zig
+++ b/src/deps/uws.zig
@@ -70,11 +70,11 @@ pub fn NewSocketHandler(comptime ssl: bool) type {
this.socket,
) > 0;
}
- pub fn isClosed(this: ThisSocket) c_int {
+ pub fn isClosed(this: ThisSocket) bool {
return us_socket_is_closed(
comptime ssl_int,
this.socket,
- );
+ ) > 0;
}
pub fn close(this: ThisSocket, code: c_int, reason: ?*anyopaque) void {
_ = us_socket_close(
@@ -191,13 +191,38 @@ pub fn NewSocketHandler(comptime ssl: bool) type {
}
};
- us_socket_context_on_open(ssl_int, ctx, SocketHandler.on_open);
- us_socket_context_on_close(ssl_int, ctx, SocketHandler.on_close);
- us_socket_context_on_data(ssl_int, ctx, SocketHandler.on_data);
- us_socket_context_on_writable(ssl_int, ctx, SocketHandler.on_writable);
- us_socket_context_on_timeout(ssl_int, ctx, SocketHandler.on_timeout);
- us_socket_context_on_connect_error(ssl_int, ctx, SocketHandler.on_connect_error);
- us_socket_context_on_end(ssl_int, ctx, SocketHandler.on_end);
+ if (comptime @typeInfo(@TypeOf(onOpen)) != .Null)
+ us_socket_context_on_open(ssl_int, ctx, SocketHandler.on_open);
+ if (comptime @typeInfo(@TypeOf(onClose)) != .Null)
+ us_socket_context_on_close(ssl_int, ctx, SocketHandler.on_close);
+ if (comptime @typeInfo(@TypeOf(onData)) != .Null)
+ us_socket_context_on_data(ssl_int, ctx, SocketHandler.on_data);
+ if (comptime @typeInfo(@TypeOf(onWritable)) != .Null)
+ us_socket_context_on_writable(ssl_int, ctx, SocketHandler.on_writable);
+ if (comptime @typeInfo(@TypeOf(onTimeout)) != .Null)
+ us_socket_context_on_timeout(ssl_int, ctx, SocketHandler.on_timeout);
+ if (comptime @typeInfo(@TypeOf(onConnectError)) != .Null)
+ us_socket_context_on_connect_error(ssl_int, ctx, SocketHandler.on_connect_error);
+ if (comptime @typeInfo(@TypeOf(onEnd)) != .Null)
+ us_socket_context_on_end(ssl_int, ctx, SocketHandler.on_end);
+ }
+
+ pub fn adopt(
+ socket: *Socket,
+ socket_ctx: *us_socket_context_t,
+ comptime Context: type,
+ comptime socket_field_name: []const u8,
+ ctx: Context,
+ ) ?*Context {
+ var adopted = Socket{ .socket = us_socket_context_adopt_socket(comptime ssl_int, socket_ctx, socket, @sizeOf(Context)) orelse return null };
+ var holder = adopted.ext(Context) orelse {
+ if (comptime bun.Environment.allow_assert) unreachable;
+ _ = us_socket_close(comptime ssl_int, socket);
+ return null;
+ };
+ holder.* = ctx;
+ @field(holder, socket_field_name) = adopted;
+ return holder;
}
};
}