diff options
author | 2022-10-17 21:48:37 -0700 | |
---|---|---|
committer | 2022-10-17 21:48:37 -0700 | |
commit | a10a8e9c70d883c230fd5f8f8d2c2550e35ea80c (patch) | |
tree | a261184cad4654fa1038fac6f570568a0735823e | |
parent | b595ddf20dee4710f0b4c4b46cd117bcb78e7af6 (diff) | |
download | bun-a10a8e9c70d883c230fd5f8f8d2c2550e35ea80c.tar.gz bun-a10a8e9c70d883c230fd5f8f8d2c2550e35ea80c.tar.zst bun-a10a8e9c70d883c230fd5f8f8d2c2550e35ea80c.zip |
Load fewer copies of uWS
-rw-r--r-- | src/bun.js/bindings/ScriptExecutionContext.cpp | 10 | ||||
-rw-r--r-- | src/bun.js/bindings/webcore/WebSocket.cpp | 83 | ||||
-rw-r--r-- | src/bun.js/bindings/webcore/WebSocket.h | 4 |
3 files changed, 45 insertions, 52 deletions
diff --git a/src/bun.js/bindings/ScriptExecutionContext.cpp b/src/bun.js/bindings/ScriptExecutionContext.cpp index 73b8b4c01..5b8d88871 100644 --- a/src/bun.js/bindings/ScriptExecutionContext.cpp +++ b/src/bun.js/bindings/ScriptExecutionContext.cpp @@ -3,8 +3,8 @@ #include "ScriptExecutionContext.h" #include "webcore/WebSocket.h" - -#include <uws/src/App.h> +#include "libusockets.h" +#include "_libusockets.h" extern "C" void Bun__startLoop(us_loop_t* loop); @@ -27,7 +27,7 @@ static void registerHTTPContextForWebSocket(ScriptExecutionContext* script, us_s us_socket_context_t* ScriptExecutionContext::webSocketContextSSL() { if (!m_ssl_client_websockets_ctx) { - us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); + us_loop_t* loop = (us_loop_t*)uws_get_loop(); 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); @@ -42,7 +42,7 @@ us_socket_context_t* ScriptExecutionContext::webSocketContextSSL() us_socket_context_t* ScriptExecutionContext::webSocketContextNoSSL() { if (!m_client_websockets_ctx) { - us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); + us_loop_t* loop = (us_loop_t*)uws_get_loop(); 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); @@ -57,7 +57,7 @@ us_socket_context_t* ScriptExecutionContext::webSocketContextNoSSL() template<bool SSL> static us_socket_context_t* registerWebSocketClientContext(ScriptExecutionContext* script, us_socket_context_t* parent) { - us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); + us_loop_t* loop = (us_loop_t*)uws_get_loop(); 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); diff --git a/src/bun.js/bindings/webcore/WebSocket.cpp b/src/bun.js/bindings/webcore/WebSocket.cpp index 6f70b898c..820f0e804 100644 --- a/src/bun.js/bindings/webcore/WebSocket.cpp +++ b/src/bun.js/bindings/webcore/WebSocket.cpp @@ -69,8 +69,6 @@ #include <wtf/text/CString.h> #include <wtf/text/StringBuilder.h> -#include <uws/src/App.h> - // #if USE(WEB_THREAD) // #include "WebCoreThreadRun.h" // #endif @@ -182,14 +180,14 @@ WebSocket::~WebSocket() Bun__WebSocketClientTLS__finalize(this->m_connectedWebSocket.clientSSL); break; } - case ConnectedWebSocketKind::Server: { - this->m_connectedWebSocket.server->end(None); - break; - } - case ConnectedWebSocketKind::ServerSSL: { - this->m_connectedWebSocket.serverSSL->end(None); - break; - } + // case ConnectedWebSocketKind::Server: { + // this->m_connectedWebSocket.server->end(None); + // break; + // } + // case ConnectedWebSocketKind::ServerSSL: { + // this->m_connectedWebSocket.serverSSL->end(None); + // break; + // } default: { break; } @@ -484,7 +482,6 @@ ExceptionOr<void> WebSocket::send(ArrayBufferView& arrayBufferView) void WebSocket::sendWebSocketData(const char* baseAddress, size_t length) { - uWS::OpCode opCode = uWS::OpCode::BINARY; switch (m_connectedWebSocketKind) { case ConnectedWebSocketKind::Client: { @@ -497,16 +494,16 @@ void WebSocket::sendWebSocketData(const char* baseAddress, size_t length) Bun__WebSocketClientTLS__writeBinaryData(this->m_connectedWebSocket.clientSSL, reinterpret_cast<const unsigned char*>(baseAddress), length); break; } - case ConnectedWebSocketKind::Server: { - this->m_connectedWebSocket.server->send({ baseAddress, length }, opCode); - this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); - break; - } - case ConnectedWebSocketKind::ServerSSL: { - this->m_connectedWebSocket.serverSSL->send({ baseAddress, length }, opCode); - this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); - break; - } + // case ConnectedWebSocketKind::Server: { + // this->m_connectedWebSocket.server->send({ baseAddress, length }, opCode); + // this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); + // break; + // } + // case ConnectedWebSocketKind::ServerSSL: { + // this->m_connectedWebSocket.serverSSL->send({ baseAddress, length }, opCode); + // this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); + // break; + // } default: { RELEASE_ASSERT_NOT_REACHED(); } @@ -529,18 +526,18 @@ void WebSocket::sendWebSocketString(const String& message) Bun__WebSocketClientTLS__writeString(this->m_connectedWebSocket.clientSSL, &zigStr); break; } - case ConnectedWebSocketKind::Server: { - auto utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); - this->m_connectedWebSocket.server->send({ utf8.data(), utf8.length() }, uWS::OpCode::TEXT); - this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); - break; - } - case ConnectedWebSocketKind::ServerSSL: { - auto utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); - this->m_connectedWebSocket.serverSSL->send({ utf8.data(), utf8.length() }, uWS::OpCode::TEXT); - this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); - break; - } + // case ConnectedWebSocketKind::Server: { + // auto utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); + // this->m_connectedWebSocket.server->send({ utf8.data(), utf8.length() }, uWS::OpCode::TEXT); + // this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); + // break; + // } + // case ConnectedWebSocketKind::ServerSSL: { + // auto utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); + // this->m_connectedWebSocket.serverSSL->send({ utf8.data(), utf8.length() }, uWS::OpCode::TEXT); + // this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); + // break; + // } default: { RELEASE_ASSERT_NOT_REACHED(); } @@ -592,16 +589,16 @@ ExceptionOr<void> WebSocket::close(std::optional<unsigned short> optionalCode, c // this->m_bufferedAmount = this->m_connectedWebSocket.clientSSL->getBufferedAmount(); break; } - case ConnectedWebSocketKind::Server: { - // this->m_connectedWebSocket.server->end(code, { utf8.data(), utf8.length() }); - // this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); - break; - } - case ConnectedWebSocketKind::ServerSSL: { - // this->m_connectedWebSocket.serverSSL->end(code, { utf8.data(), utf8.length() }); - // this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); - break; - } + // case ConnectedWebSocketKind::Server: { + // this->m_connectedWebSocket.server->end(code, { utf8.data(), utf8.length() }); + // this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); + // break; + // } + // case ConnectedWebSocketKind::ServerSSL: { + // // this->m_connectedWebSocket.serverSSL->end(code, { utf8.data(), utf8.length() }); + // // this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); + // break; + // } default: { break; } diff --git a/src/bun.js/bindings/webcore/WebSocket.h b/src/bun.js/bindings/webcore/WebSocket.h index 2043d58b9..796268d7a 100644 --- a/src/bun.js/bindings/webcore/WebSocket.h +++ b/src/bun.js/bindings/webcore/WebSocket.h @@ -112,15 +112,11 @@ private: typedef union AnyWebSocket { WebSocketClient* client; WebSocketClientTLS* clientSSL; - uWS::WebSocket<false, true, WebCore::WebSocket*>* server; - uWS::WebSocket<true, true, WebCore::WebSocket*>* serverSSL; } AnyWebSocket; enum ConnectedWebSocketKind { None, Client, ClientSSL, - Server, - ServerSSL }; explicit WebSocket(ScriptExecutionContext&); |