WebSocketClientAdapter.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 void send(ByteBuffer binary_or_text_message, bool is_text) override;
  24. virtual void send(StringView text_message) override;
  25. virtual void close(u16 code = 1005, String reason = {}) override;
  26. private:
  27. WebSocketClientSocketAdapter(NonnullRefPtr<Protocol::WebSocket>);
  28. NonnullRefPtr<Protocol::WebSocket> m_websocket;
  29. };
  30. class WebSocketClientManagerAdapter : public Web::WebSockets::WebSocketClientManager {
  31. public:
  32. static ErrorOr<NonnullRefPtr<WebSocketClientManagerAdapter>> try_create();
  33. virtual ~WebSocketClientManagerAdapter() override;
  34. virtual RefPtr<Web::WebSockets::WebSocketClientSocket> connect(const AK::URL&, String const& origin) override;
  35. private:
  36. WebSocketClientManagerAdapter(NonnullRefPtr<Protocol::WebSocketClient>);
  37. NonnullRefPtr<Protocol::WebSocketClient> m_websocket_client;
  38. };
  39. }