WebSocketClientAdapter.h 1.6 KB

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