5#ifndef RUNTIME_VM_SERVICE_H_
6#define RUNTIME_VM_SERVICE_H_
20#define SERVICE_PROTOCOL_MAJOR_VERSION 4
21#define SERVICE_PROTOCOL_MINOR_VERSION 15
24class EmbedderServiceHandler;
27class GrowableObjectArray;
48#define ISOLATE_SERVICE_ID_FORMAT_STRING "isolates/%" Pd64 ""
49#define ISOLATE_GROUP_SERVICE_ID_PREFIX "isolateGroups/"
50#define ISOLATE_GROUP_SERVICE_ID_FORMAT_STRING \
51 ISOLATE_GROUP_SERVICE_ID_PREFIX "%" Pu64 ""
75 : id_(
id), enabled_(0), include_private_members_(
false) {}
77 const char*
id()
const {
return id_; }
80 bool enabled()
const {
return enabled_ != 0; }
83 include_private_members_ =
value;
92 std::atomic<intptr_t> enabled_;
93 std::atomic<bool> include_private_members_;
136 const char* stream_id,
137 const char* event_kind,
138 const uint8_t* bytes,
142 int64_t sequence_number,
153 const String& event_data);
158 intptr_t reservation,
159 const char* metadata,
160 intptr_t metadata_size,
165 const Array& parameter_keys,
166 const Array& parameter_values,
190 static bool ListenStream(
const char* stream_id,
bool include_privates);
196 return stream_listen_callback_;
199 return stream_cancel_callback_;
211 intptr_t kernel_length);
213 return (dart_library_kernel_ !=
nullptr);
219 return dart_library_kernel_len_;
223 static ErrorPtr InvokeMethod(
Isolate* isolate,
225 bool parameters_are_dart_objects =
false);
232 static void ScheduleExtensionHandler(
const Instance& handler,
233 const String& method_name,
234 const Array& parameter_keys,
235 const Array& parameter_values,
240 static void SendEvent(
const char* stream_id,
243 intptr_t bytes_length);
247 const char* stream_id,
250 bool enter_safepoint);
254 const char* stream_id,
267 static void* service_response_size_log_file_;
269 static const uint8_t* dart_library_kernel_;
270 static intptr_t dart_library_kernel_len_;
276 const GrowableObjectArray& elements);
ax::mojom::Event event_type
virtual ~RingServiceIdZone()
void set_policy(ObjectIdRing::IdPolicy policy)
ObjectIdRing::IdPolicy policy() const
void Init(ObjectIdRing *ring, ObjectIdRing::IdPolicy policy)
virtual char * GetServiceId(const Object &obj)
virtual char * GetServiceId(const Object &obj)=0
static StreamInfo isolate_stream
static void SendEmbedderEvent(Isolate *isolate, const char *stream_id, const char *event_kind, const uint8_t *bytes, intptr_t bytes_len)
static void LogResponseSize(const char *method, JSONStream *js)
static ErrorPtr HandleRootMessage(const Array &message)
static StreamInfo timeline_stream
static void CancelStream(const char *stream_id)
static void HandleEvent(ServiceEvent *event, bool enter_safepoint=true)
static bool ListenStream(const char *stream_id, bool include_privates)
static StreamInfo debug_stream
static void SendEchoEvent(Isolate *isolate, const char *text)
static const uint8_t * dart_library_kernel()
static void SetGetServiceAssetsCallback(Dart_GetVMServiceAssetsArchive get_service_assets)
static bool HasDartLibraryKernelForSources()
static void SetDartLibraryKernelForSources(const uint8_t *kernel_bytes, intptr_t kernel_length)
static void SendExtensionEvent(Isolate *isolate, const String &event_kind, const String &event_data)
static void SetEmbedderStreamCallbacks(Dart_ServiceStreamListenCallback listen_callback, Dart_ServiceStreamCancelCallback cancel_callback)
static ErrorPtr HandleIsolateMessage(Isolate *isolate, const Array &message)
static ObjectPtr RequestAssets()
static void RegisterRootEmbedderCallback(const char *name, Dart_ServiceRequestCallback callback, void *user_data)
static void SendInspectEvent(Isolate *isolate, const Object &inspectee)
static StreamInfo vm_stream
static void RegisterIsolateEmbedderCallback(const char *name, Dart_ServiceRequestCallback callback, void *user_data)
static void PostError(const String &method_name, const Array ¶meter_keys, const Array ¶meter_values, const Instance &reply_port, const Instance &id, const Error &error)
static StreamInfo echo_stream
static StreamInfo logging_stream
static ErrorPtr HandleObjectRootMessage(const Array &message)
static Dart_ServiceStreamCancelCallback stream_cancel_callback()
static int64_t CurrentRSS()
static StreamInfo profiler_stream
static void SendLogEvent(Isolate *isolate, int64_t sequence_number, int64_t timestamp, intptr_t level, const String &name, const String &message, const Instance &zone, const Object &error, const Instance &stack_trace)
static Dart_ServiceStreamListenCallback stream_listen_callback()
static void CheckForPause(Isolate *isolate, JSONStream *stream)
static StreamInfo gc_stream
static void SendEventWithData(const char *stream_id, const char *event_type, intptr_t reservation, const char *metadata, intptr_t metadata_size, uint8_t *data, intptr_t data_size)
static void PrintJSONForEmbedderInformation(JSONObject *jsobj)
static StreamInfo extension_stream
static void SetEmbedderInformationCallback(Dart_EmbedderInformationCallback callback)
static bool EnableTimelineStreams(char *categories_list)
static StreamInfo heapsnapshot_stream
static intptr_t dart_library_kernel_length()
static void PrintJSONForVM(JSONStream *js, bool ref)
void set_enabled(bool value)
static intptr_t enabled_offset()
bool include_private_members() const
StreamInfo(const char *id)
void set_include_private_members(bool value)
Dart_Handle(* Dart_GetVMServiceAssetsArchive)(void)
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
const uint8_t uint32_t uint32_t GError ** error
static int8_t data[kExtLength]
intptr_t ParseJSONArray(Thread *thread, const char *str, const GrowableObjectArray &elements)
#define OFFSET_OF(type, field)