#include "root.h" #include "headers.h" #include "ScriptExecutionContext.h" #include "webcore/WebSocket.h" #include extern "C" void Bun__startLoop(us_loop_t* loop); namespace WebCore { template static void registerHTTPContextForWebSocket(ScriptExecutionContext* script, us_socket_context_t* ctx, us_loop_t* loop) { if constexpr (!isServer) { if constexpr (SSL) { Bun__WebSocketHTTPSClient__register(script->jsGlobalObject(), loop, ctx); } else { Bun__WebSocketHTTPClient__register(script->jsGlobalObject(), loop, ctx); } } else { RELEASE_ASSERT_NOT_REACHED(); } } us_socket_context_t* ScriptExecutionContext::webSocketContextSSL() { if (!m_ssl_client_websockets_ctx) { us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); us_socket_context_options_t opts; memset(&opts, 0, sizeof(us_socket_context_options_t)); this->m_ssl_client_websockets_ctx = us_create_socket_context(1, loop, sizeof(size_t), opts); void** ptr = reinterpret_cast(us_socket_context_ext(1, m_ssl_client_websockets_ctx)); *ptr = this; registerHTTPContextForWebSocket(this, m_ssl_client_websockets_ctx, loop); } return m_ssl_client_websockets_ctx; } us_socket_context_t* ScriptExecutionContext::webSocketContextNoSSL() { if (!m_client_websockets_ctx) { us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); us_socket_context_options_t opts; memset(&opts, 0, sizeof(us_socket_context_options_t)); this->m_client_websockets_ctx = us_create_socket_context(0, loop, sizeof(size_t), opts); void** ptr = reinterpret_cast(us_socket_context_ext(0, m_client_websockets_ctx)); *ptr = this; registerHTTPContextForWebSocket(this, m_client_websockets_ctx, loop); } return m_client_websockets_ctx; } template static us_socket_context_t* registerWebSocketClientContext(ScriptExecutionContext* script, us_socket_context_t* parent) { us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); if constexpr (SSL) { us_socket_context_t* child = us_create_child_socket_context(1, parent, sizeof(size_t)); Bun__WebSocketClientTLS__register(script->jsGlobalObject(), loop, child); return child; } else { us_socket_context_t* child = us_create_child_socket_context(0, parent, sizeof(size_t)); Bun__WebSocketClient__register(script->jsGlobalObject(), loop, child); return child; } } us_socket_context_t* ScriptExecutionContext::connectedWebSocketKindClient() { return registerWebSocketClientContext(this, webSocketContextNoSSL()); } us_socket_context_t* ScriptExecutionContext::connectedWebSocketKindClientSSL() { return registerWebSocketClientContext(this, webSocketContextSSL()); } }>dave/remove-native-event Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2022-03-30[Bun.js] fixup Bun.hashGravatar Jarred Sumner 1-4/+9
2022-03-30[bun-framework-next] Support Next 12.1.3 & React 18Gravatar Jarred Sumner 4-18/+86
2022-03-30[bun-framework-next] Remove unnecessary polyfillsGravatar Jarred Sumner 2-655/+0
2022-03-30Don't need to import react hereGravatar Jarred Sumner 1-1/+0
2022-03-28Delete url.zigGravatar Jarred Sumner 1-151/+0
2022-03-28[bun.js] Add `Bun.hash`Gravatar Jarred Sumner 2-0/+160
2022-03-28CustomEventGravatar Jarred Sumner 11-14/+738
2022-03-28ScriptExecutionContextGravatar Jarred Sumner 2-15/+14
2022-03-28[`bun.js`] Add `Event`, `EventTarget`, `AbortController`, `AbortSignal`Gravatar Jarred Sumner 111-21/+11463
2022-03-27Safer error handlingGravatar Jarred Sumner 2-13/+19
2022-03-27[Bun.js] Add `DOMException`Gravatar Jarred Sumner 1-7/+18
2022-03-27No to FormData for nowGravatar Jarred Sumner 3-272/+2
2022-03-27Update WebKitGravatar Jarred Sumner 1-0/+0
2022-03-27Update base.zigGravatar Jarred Sumner 1-1/+1
2022-03-27Update .clang-formatGravatar Jarred Sumner 1-1/+1
2022-03-27Update MakefileGravatar Jarred Sumner 1-7/+24
2022-03-27Begin adding WebCore classes to bunGravatar Jarred Sumner 123-1014/+12717
2022-03-27Add Bun.mmap exampleGravatar Jarred Sumner 3-0/+34