WebSocketClient.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2021, Dex♪ <dexes.ttp@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/HashMap.h>
  8. #include <LibIPC/ConnectionToServer.h>
  9. #include <WebSocket/WebSocketClientEndpoint.h>
  10. #include <WebSocket/WebSocketServerEndpoint.h>
  11. namespace Protocol {
  12. class WebSocket;
  13. class WebSocketClient final
  14. : public IPC::ConnectionToServer<WebSocketClientEndpoint, WebSocketServerEndpoint>
  15. , public WebSocketClientEndpoint {
  16. IPC_CLIENT_CONNECTION(WebSocketClient, "/tmp/user/%uid/portal/websocket"sv)
  17. public:
  18. RefPtr<WebSocket> connect(const URL&, String const& origin = {}, Vector<String> const& protocols = {}, Vector<String> const& extensions = {}, HashMap<String, String> const& request_headers = {});
  19. u32 ready_state(Badge<WebSocket>, WebSocket&);
  20. void send(Badge<WebSocket>, WebSocket&, ByteBuffer, bool is_text);
  21. void close(Badge<WebSocket>, WebSocket&, u16 code, String reason);
  22. bool set_certificate(Badge<WebSocket>, WebSocket&, String, String);
  23. private:
  24. WebSocketClient(NonnullOwnPtr<Core::Stream::LocalSocket>);
  25. virtual void connected(i32) override;
  26. virtual void received(i32, bool, ByteBuffer const&) override;
  27. virtual void errored(i32, i32) override;
  28. virtual void closed(i32, u16, String const&, bool) override;
  29. virtual void certificate_requested(i32) override;
  30. HashMap<i32, NonnullRefPtr<WebSocket>> m_connections;
  31. };
  32. }