mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-08 12:19:37 +03:00
f89944e804
RPC clients now send JSON-encoded requests to the RPC server. The connection also stays alive instead of disconnecting automatically after the initial CObject graph dump. JSON payloads are preceded by a single host-order encoded 32-bit int containing the length of the payload. So far, we have three RPC commands: - Identify - GetAllObjects - Disconnect We'll be adding more of these as we go along. :^)
38 lines
932 B
C++
38 lines
932 B
C++
#pragma once
|
|
|
|
#include <AK/NonnullOwnPtrVector.h>
|
|
#include <LibCore/CLocalSocket.h>
|
|
|
|
namespace AK {
|
|
class JsonObject;
|
|
}
|
|
|
|
class RemoteObjectGraphModel;
|
|
class RemoteObject;
|
|
|
|
class RemoteProcess {
|
|
public:
|
|
explicit RemoteProcess(pid_t);
|
|
void update();
|
|
|
|
pid_t pid() const { return m_pid; }
|
|
const String& process_name() const { return m_process_name; }
|
|
|
|
RemoteObjectGraphModel& object_graph_model() { return *m_object_graph_model; }
|
|
const NonnullOwnPtrVector<RemoteObject>& roots() const { return m_roots; }
|
|
|
|
Function<void()> on_update;
|
|
|
|
private:
|
|
void handle_get_all_objects_response(const AK::JsonObject&);
|
|
void handle_identify_response(const AK::JsonObject&);
|
|
|
|
void send_request(const AK::JsonObject&);
|
|
|
|
pid_t m_pid { -1 };
|
|
String m_process_name;
|
|
NonnullRefPtr<RemoteObjectGraphModel> m_object_graph_model;
|
|
CLocalSocket m_socket;
|
|
NonnullOwnPtrVector<RemoteObject> m_roots;
|
|
};
|