RemoteInspectorConnectionClient.h [plain text]
#pragma once
#if ENABLE(REMOTE_INSPECTOR)
#include "RemoteControllableTarget.h"
#include "RemoteInspectorMessageParser.h"
#include "RemoteInspectorSocketEndpoint.h"
#include <wtf/HashMap.h>
#include <wtf/JSONValues.h>
#include <wtf/Lock.h>
#include <wtf/text/WTFString.h>
namespace Inspector {
class MessageParser;
class JS_EXPORT_PRIVATE RemoteInspectorConnectionClient : public RemoteInspectorSocketEndpoint::Client {
public:
~RemoteInspectorConnectionClient() override;
Optional<ConnectionID> connectInet(const char* serverAddr, uint16_t serverPort);
Optional<ConnectionID> createClient(PlatformSocketType);
void send(ConnectionID, const uint8_t* data, size_t);
void didReceive(RemoteInspectorSocketEndpoint&, ConnectionID, Vector<uint8_t>&&) final;
struct Event {
String methodName;
ConnectionID clientID { };
Optional<ConnectionID> connectionID;
Optional<TargetID> targetID;
Optional<String> message;
};
using CallHandler = void (RemoteInspectorConnectionClient::*)(const Event&);
virtual HashMap<String, CallHandler>& dispatchMap() = 0;
protected:
Optional<Vector<Ref<JSON::Object>>> parseTargetListJSON(const String&);
static Optional<Event> extractEvent(ConnectionID, Vector<uint8_t>&&);
HashMap<ConnectionID, MessageParser> m_parsers;
Lock m_parsersLock;
};
}
#endif // ENABLE(REMOTE_INSPECTOR)