WebSocketClient.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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/session/%sid/portal/websocket"sv)
  17. public:
  18. explicit WebSocketClient(NonnullOwnPtr<Core::LocalSocket>);
  19. RefPtr<WebSocket> connect(const URL&, ByteString const& origin = {}, Vector<ByteString> const& protocols = {}, Vector<ByteString> const& extensions = {}, HashMap<ByteString, ByteString> const& request_headers = {});
  20. u32 ready_state(Badge<WebSocket>, WebSocket&);
  21. ByteString subprotocol_in_use(Badge<WebSocket>, WebSocket&);
  22. void send(Badge<WebSocket>, WebSocket&, ByteBuffer, bool is_text);
  23. void close(Badge<WebSocket>, WebSocket&, u16 code, ByteString reason);
  24. bool set_certificate(Badge<WebSocket>, WebSocket&, ByteString, ByteString);
  25. private:
  26. virtual void connected(i32) override;
  27. virtual void received(i32, bool, ByteBuffer const&) override;
  28. virtual void errored(i32, i32) override;
  29. virtual void closed(i32, u16, ByteString const&, bool) override;
  30. virtual void certificate_requested(i32) override;
  31. HashMap<i32, NonnullRefPtr<WebSocket>> m_connections;
  32. };
  33. }