Serenity Operating System
1/*
2 * Copyright (c) 2022, Dex♪ <dexes.ttp@gmail.com>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/Error.h>
10#include <AK/NonnullRefPtr.h>
11#include <AK/Weakable.h>
12#include <LibWeb/WebSockets/WebSocket.h>
13
14namespace Protocol {
15class WebSocket;
16class WebSocketClient;
17};
18
19namespace WebView {
20
21class WebSocketClientSocketAdapter
22 : public Web::WebSockets::WebSocketClientSocket
23 , public Weakable<WebSocketClientSocketAdapter> {
24public:
25 static RefPtr<WebSocketClientSocketAdapter> create(NonnullRefPtr<Protocol::WebSocket>);
26 virtual ~WebSocketClientSocketAdapter() override;
27
28 virtual Web::WebSockets::WebSocket::ReadyState ready_state() override;
29 virtual DeprecatedString subprotocol_in_use() override;
30
31 virtual void send(ByteBuffer binary_or_text_message, bool is_text) override;
32 virtual void send(StringView text_message) override;
33 virtual void close(u16 code = 1005, DeprecatedString reason = {}) override;
34
35private:
36 WebSocketClientSocketAdapter(NonnullRefPtr<Protocol::WebSocket>);
37
38 NonnullRefPtr<Protocol::WebSocket> m_websocket;
39};
40
41class WebSocketClientManagerAdapter : public Web::WebSockets::WebSocketClientManager {
42public:
43 static ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> try_create();
44
45 virtual ~WebSocketClientManagerAdapter() override;
46
47 virtual RefPtr<Web::WebSockets::WebSocketClientSocket> connect(const AK::URL&, DeprecatedString const& origin, Vector<DeprecatedString> const& protocols) override;
48
49private:
50 WebSocketClientManagerAdapter(NonnullRefPtr<Protocol::WebSocketClient>);
51
52 NonnullRefPtr<Protocol::WebSocketClient> m_websocket_client;
53};
54
55}