OLD | NEW |
---|---|
1 // | 1 // |
2 // TODO(turnidge): Finish writing an idl description of the service protocol. | 2 // TODO(turnidge): Finish writing an idl description of the service protocol. |
3 // | 3 // |
4 | 4 |
5 interface Service { | 5 interface Service { |
6 // Returns global information about the Dart VM. | |
6 getVM() VM | 7 getVM() VM |
7 | 8 |
9 // Changes the debugging name for some isolate. | |
10 setName(name string) Response | |
Cutch
2015/04/02 18:11:41
add missing isolateId
turnidge
2015/04/02 18:27:30
Done.
| |
11 | |
12 // Returns information about an isolate. | |
13 getIsolate(isolateId string) Isolate | |
14 | |
15 // Returns a list of vm flags and their values. | |
8 getFlagList() FlagList | 16 getFlagList() FlagList |
9 | 17 |
18 // Sets the value of a vm flag | |
10 setFlag(name string, value string) Response | 19 setFlag(name string, value string) Response |
11 | 20 |
21 // Loads an object by id from an isolate. | |
12 getObject(isolateId string, objectId string) Object | 22 getObject(isolateId string, objectId string) Object |
13 | 23 |
14 // The response is a subtype of Object or ObjectRef. | 24 // The response is a subtype of Object or ObjectRef. |
15 getObjectByAddress(address string, ref bool) Response | 25 getObjectByAddress(address string, ref bool) Response |
16 | 26 |
17 // Adds a breakpoint at the specified line. | 27 // Adds a breakpoint at the specified line. |
18 // | 28 // |
19 // TODO(turnidge): Make line an int instead of a string. | 29 // TODO(turnidge): Make line an int instead of a string. |
20 addBreakpoint(isolateId string, | 30 addBreakpoint(isolateId string, |
21 scriptId string, | 31 scriptId string, |
(...skipping 19 matching lines...) Expand all Loading... | |
41 eval(isolateId string, targetId string, expression string) InstanceRef | 51 eval(isolateId string, targetId string, expression string) InstanceRef |
42 | 52 |
43 // Returns the current execution stack for an isolate. | 53 // Returns the current execution stack for an isolate. |
44 getStack(isolateId string) Stack | 54 getStack(isolateId string) Stack |
45 | 55 |
46 // Returns code coverage information for a library, script, class, | 56 // Returns code coverage information for a library, script, class, |
47 // or function. | 57 // or function. |
48 getCoverage(isolateId string, targetId string) CodeCoverage | 58 getCoverage(isolateId string, targetId string) CodeCoverage |
49 | 59 |
50 // Returns call site cache information for a function. | 60 // Returns call site cache information for a function. |
51 getCallSiteData(isolateId string, targetId string) _CallSiteData | 61 _getCallSiteData(isolateId string, targetId string) _CallSiteData |
52 | 62 |
53 // Returns a full cpu profile for an isolate. | 63 // Returns a full cpu profile for an isolate. |
54 // | 64 // |
55 // <code>tagSelector</code> is optional with default 'UserVM'. | 65 // <code>tagSelector</code> is optional with default 'UserVM'. |
56 getCpuProfile(isolateId string, tags TagSelector) CpuProfile | 66 getCpuProfile(isolateId string, tags TagSelector) CpuProfile |
57 | 67 |
58 | 68 |
59 // Returns a simple tag-based profile for an isolate. | 69 // Returns a simple tag-based profile for an isolate. |
60 getTagProfile(isolateId string) TagProfile | 70 getTagProfile(isolateId string) TagProfile |
61 | 71 |
(...skipping 28 matching lines...) Expand all Loading... | |
90 limit int) InboundReferences | 100 limit int) InboundReferences |
91 | 101 |
92 getClassList(isolateId string) ClassList | 102 getClassList(isolateId string) ClassList |
93 | 103 |
94 // When <code>onlyWithInstantiations</code> is true, the list only includes | 104 // When <code>onlyWithInstantiations</code> is true, the list only includes |
95 // type arguments with instantiations. Otherwise, all type arguments are | 105 // type arguments with instantiations. Otherwise, all type arguments are |
96 // returned. | 106 // returned. |
97 getTypeArgumentsList(isolateId string, | 107 getTypeArgumentsList(isolateId string, |
98 onlyWithInstantiations bool) TypeArgumentsList | 108 onlyWithInstantiations bool) TypeArgumentsList |
99 | 109 |
110 // Gets a list of isolate metrics. | |
100 getIsolateMetricList(isolateId string, | 111 getIsolateMetricList(isolateId string, |
101 type MetricSelector) MetricList | 112 type MetricSelector) MetricList |
102 | 113 |
114 // Gets a specific isolate metric by id. | |
103 getIsolateMetric(isolateId string, | 115 getIsolateMetric(isolateId string, |
104 metricId string) Metric | 116 metricId string) Metric |
105 | 117 |
118 // Gets a list of vm metrics. | |
106 getVMMetricList() MetricList | 119 getVMMetricList() MetricList |
107 | 120 |
121 // Gets a specific vm metric by id. | |
108 getVMMetric(metricId string) Metric | 122 getVMMetric(metricId string) Metric |
109 | 123 |
124 // A test rpc for vm requests. | |
125 _echoVM(text string) _EchoResponse | |
126 | |
127 // A test rpc for isolate requests. | |
110 _echo(isolateId string, | 128 _echo(isolateId string, |
111 text string) _EchoResponse | 129 text string) _EchoResponse |
112 | 130 |
113 _echoVM(text string) _EchoResponse | |
114 | |
115 // Triggers a ServiceEvent with EventType '_Echo'. | 131 // Triggers a ServiceEvent with EventType '_Echo'. |
116 _triggerEchoEvent(isolateId string, | 132 _triggerEchoEvent(isolateId string, |
117 text string) _EchoResponse | 133 text string) _EchoResponse |
118 | 134 |
119 // Response is bad JSON. | 135 // Response is bad JSON. |
120 _respondWithMalformedJson(isolateId string) Response | 136 _respondWithMalformedJson(isolateId string) Response |
121 | 137 |
122 // Response is not an object. | 138 // Response is not an object. |
123 _respondWithMalformedObject(isolateId string) Response | 139 _respondWithMalformedObject(isolateId string) Response |
124 } | 140 } |
(...skipping 10 matching lines...) Expand all Loading... | |
135 type string | 151 type string |
136 | 152 |
137 // Some responses will have the <code>_vmType</code> property. This | 153 // Some responses will have the <code>_vmType</code> property. This |
138 // provides the VM-internal type name of an object, and is provided | 154 // provides the VM-internal type name of an object, and is provided |
139 // only when this type name differs from the <code>type</code> | 155 // only when this type name differs from the <code>type</code> |
140 // property. | 156 // property. |
141 _vmType string [optional] | 157 _vmType string [optional] |
142 } | 158 } |
143 | 159 |
144 | 160 |
161 struct ServiceEvent extends Response { | |
162 // What kind of event is this? | |
163 eventType ServiceEventType | |
164 | |
165 // The isolate with which this event is associated. | |
166 isolate string | |
Cutch
2015/04/02 18:11:41
s/string/isolateRef
turnidge
2015/04/02 18:27:30
Nice catch. Done.
| |
167 | |
168 // The breakpoint associated with this event, if applicable. | |
169 // | |
170 // This is provided for the events: | |
171 // <code>PauseBreakpoint</code> | |
172 // <code>BreakpointAdded</code> | |
173 // <code>BreakpointRemoved</code> | |
174 // <code>BreakpointResolved</code> | |
175 breakpoint Breakpoint [optional] | |
176 | |
177 // The top stack frame associated with this event, if applicable. | |
178 // | |
179 // This is provided for the events: | |
180 // <code>PauseBreakpoint</code> | |
181 // <code>PauseInterrupted</code> | |
182 // <code>PauseException</code> | |
183 // | |
184 // For the <code>Resume</code> event, the top frame is provided at | |
185 // all times except for the initial resume event that is delivered | |
186 // when an isolate begins execution. | |
187 topFrame Frame [optional] | |
188 | |
189 // The exception associated with this event, if this is a | |
190 // <code>PauseException</code> event. | |
191 exception InstanceRef [optional] | |
192 } | |
193 | |
194 | |
195 enum ServiceEventType { | |
196 // Notification that a new isolate has started. | |
197 IsolateStart | |
198 | |
199 // Notification that an isolate has exited. | |
200 IsolateExit | |
201 | |
202 // Notification that isolate identifying information has changed. | |
203 // Currently used to notify of changes to the isolate debugging name | |
204 // via <code>setName</code>. | |
205 IsolateUpdate | |
206 | |
207 // An isolate has paused at start, before executing code. | |
208 PauseStart | |
209 | |
210 // An isolate has paused at exit, before terminating. | |
211 PauseExit | |
212 | |
213 // An isolate has paused at a breakpoint or due to stepping. | |
214 PauseBreakpoint | |
215 | |
216 // An isolate has paused due to interruption via <code>pause</code>. | |
217 PauseInterrupted | |
218 | |
219 // An isolate has paused due to an exception. | |
220 // | |
221 // TODO(turnidge): Allow user to toggle pause-on-exceptions. | |
222 PauseException | |
223 | |
224 // An isolate has started or resumed execution. | |
225 Resume | |
226 | |
227 // A breakpoint has been added for an isolate. | |
228 BreakpointAdded | |
229 | |
230 // An unresolved breakpoint has been resolved for an isolate. | |
231 BreakpointResolved | |
232 | |
233 // A breakpoint has been removed. | |
234 BreakpointRemoved | |
235 | |
236 // A garbage collection event. | |
237 GC | |
238 | |
239 // The object graph is being delivered. This is triggered via | |
240 // <code>requestHeapSnapshot</code>. | |
241 _Graph | |
242 } | |
243 | |
244 | |
145 struct VM extends Response { | 245 struct VM extends Response { |
146 placeholder int | 246 // Word length on target architecture (e.g. 32, 64). |
147 } | 247 architectureBits int |
148 | 248 |
149 | 249 // The CPU we are generating code for. |
250 targetCPU string | |
251 | |
252 // The CPU we are actually running on. | |
253 hostCPU string | |
254 | |
255 // The Dart VM version string. | |
256 version string | |
257 | |
258 // The process id for the VM. | |
259 pid string | |
260 | |
261 // The time that the VM started in milliseconds since the epoch. | |
262 // | |
263 // Suitable to pass to DateTime.fromMillisecondsSinceEpoch. | |
264 startTime int | |
Cutch
2015/04/02 18:11:41
should we make a distinct type, e.g. "milliseconds
turnidge
2015/04/02 18:27:30
Acknowledged.
| |
265 | |
266 // A list of isolates running in the VM. | |
267 isolates []IsolateRef | |
268 | |
269 // Are assertions enabled in the VM? | |
270 // | |
271 // TODO(turnidge): Move to some sort of general settings list? | |
272 _assertsEnabled bool | |
273 | |
274 // Are type checks enabled in the VM? | |
275 // | |
276 // TODO(turnidge): Move to some sort of general settings list? | |
277 _typeChecksEnabled bool | |
278 } | |
279 | |
280 | |
281 // A reference to an an isolate. | |
282 struct IsolateRef extends Object { | |
283 // A numeric id for this isolate, represented as a string. Unique. | |
284 number string | |
285 | |
286 // A name identifying this isolate. Not guaranteed to be unique. | |
287 name string | |
288 } | |
289 | |
290 | |
291 // An isolate running in the VM. | |
292 struct Isolate { | |
293 // A numeric id for this isolate, represented as a string. Unique. | |
294 number string | |
295 | |
296 // A name identifying this isolate. Not guaranteed to be unique. | |
297 name string | |
298 | |
299 // The time that the VM started in milliseconds since the epoch. | |
300 // | |
301 // Suitable to pass to DateTime.fromMillisecondsSinceEpoch. | |
302 startTime int | |
303 | |
304 // The entry function for this isolate. | |
305 entry FunctionRef [optional] | |
306 | |
307 // The number of live ports for this isolate. | |
308 livePorts int | |
309 | |
310 // Will this isolate pause when exiting? | |
311 pauseOnExit bool | |
312 | |
313 // The last pause event delivered to the isolate. If the isolate is | |
314 // running, this will be a resume event. | |
315 pauseEvent ServiceEvent | |
316 | |
317 // The error that is causing this isolate to exit, if applicable. | |
318 error Error [optional] | |
319 | |
320 // The root library for this isolate. | |
321 rootLib LibraryRef | |
322 | |
323 // A list of all libraries for this isolate. | |
324 libraries []LibraryRef | |
325 | |
326 // A list of all breakpoints for this isolate. | |
327 breakpoints []Breakpoint | |
328 | |
329 // A list of features enabled for this isolate. | |
330 features []string | |
331 | |
332 // placeholder | |
Cutch
2015/04/02 18:11:41
globally: s/placeholder/TODO ?
turnidge
2015/04/02 18:27:30
Done.
| |
333 heaps int | |
334 | |
335 // placeholder | |
336 tagCounters int | |
337 } | |
338 | |
339 | |
340 // A list of flags. | |
150 struct FlagList extends Response { | 341 struct FlagList extends Response { |
151 placeholder int | 342 // A list of all flags which are set to default values. |
152 } | 343 unmodifiedFlags []Flag |
153 | 344 |
154 | 345 // A list of all flags which have been modified by the user. |
155 struct _EchoResponse extends Response { | 346 modifiedFlags []Flag |
156 text string | 347 } |
157 } | 348 |
158 | 349 |
159 | 350 // A single flag. |
160 // Persistent objects in the vm are returned as subclasses of Object. | 351 struct Flag { |
352 // The name of the flag. | |
353 name string | |
354 | |
355 // A description of the flag. | |
356 comment string | |
357 | |
358 // The type of the flag. | |
359 flagType FlagType | |
360 } | |
361 | |
362 | |
363 // The type of a flag. | |
364 enum FlagType { | |
365 bool | |
366 int | |
367 uint64_t | |
368 string | |
369 } | |
370 | |
371 | |
372 // A reference to a persistent object that lives in some isolate. | |
373 struct ObjectRef extends Response { | |
374 // A unique identifier for an object. Passed to <code>getObject</code> to loa d the full object. | |
Cutch
2015/04/02 18:11:41
column limit.
turnidge
2015/04/02 18:27:30
Done.
| |
375 id string | |
376 } | |
377 | |
378 | |
379 // A persistent object that lives in some isolate. | |
161 struct Object extends Response { | 380 struct Object extends Response { |
162 // The object <code>id</code> can be used to refer to a persistent | 381 // A unique identifier for this object. |
163 // object inside the vm or an isolate. | 382 id string |
164 id string | 383 } |
384 | |
385 | |
386 // TODO(turnidge): null type | |
387 // TODO(turnidge): VMObject. | |
388 | |
389 | |
390 // A reference to a Dart language class. | |
391 struct ClassRef extends ObjectRef { | |
392 // The name of this class. | |
393 name string | |
394 | |
395 // A vm internal name, provided only when it is different than name. | |
396 _vmName string | |
397 } | |
398 | |
399 | |
400 // A Dart language class. | |
401 struct Class extends Object { | |
402 // The name of this class. | |
403 name string | |
404 | |
405 // A vm internal name, provided only when it is different than name. | |
406 _vmName string | |
407 | |
408 // The error which occurred during class finalization, if it exists. | |
409 error InstanceRef [optional] | |
410 | |
411 // Is this an abstract class? | |
412 abstract bool | |
413 | |
414 // Is this a const class? | |
415 const bool | |
416 | |
417 // Has this class been finalized? | |
418 finalized bool | |
419 | |
420 // Is this class implemented? | |
421 implemented bool | |
422 | |
423 // Is this a vm patch class? | |
424 patch bool | |
425 | |
426 // The library which contains this class. | |
427 library LibraryRef | |
428 | |
429 // The script which defines this class. May be missing for some | |
430 // classes. | |
431 script ScriptRef | |
432 | |
433 // The superclass of this class, if any. | |
434 super ClassRef [optional] | |
435 | |
436 // A list of interface types for this class. | |
437 interfaces []TypeRef | |
438 | |
439 // A list of fields in this class. Does not include fields from | |
440 // superclasses. | |
441 fields []FieldRef | |
442 | |
443 // A list of functions in this class. Does not include functions | |
444 // from superclasses. | |
445 functions []FunctionRef | |
446 | |
447 // A list of subclasses of this class. | |
448 subclasses []ClassRef | |
449 | |
450 // Allocation statistics for this class, if available. | |
451 allocationStats ClassHeapStats [optional] | |
452 } | |
453 | |
454 | |
455 struct ClassHeapStats extends Response { | |
456 placeholder int | |
457 } | |
458 | |
459 | |
460 // A reference to a type arguments vector. | |
461 struct TypeArgumentsRef extends ObjectRef { | |
462 // A name for this type argument list. | |
463 name string | |
464 | |
465 // A vm internal name, provided only when it is different than name. | |
466 _vmName string | |
467 } | |
468 | |
469 | |
470 // The type argument vector for some instantiated generic type. | |
471 struct TypeArguments extends Object { | |
472 // A name for this type argument list. | |
473 name string | |
474 | |
475 // A vm internal name, provided only when it is different than name. | |
476 _vmName string | |
477 | |
478 // A list of types. | |
479 types []TypeRef | |
480 } | |
481 | |
482 | |
483 // Represents an error object inside the VM. | |
484 struct Error extends Object { | |
485 // An error message | |
486 message string | |
487 } | |
488 | |
489 | |
490 // A <code>InstanceRef</code> encodes a reference to a | |
491 // <code>Instance</code> object. | |
492 struct InstanceRef extends ObjectRef { | |
493 placeholder int | |
494 } | |
495 | |
496 | |
497 struct TypeRef extends InstanceRef { | |
498 placeholder2 int | |
165 } | 499 } |
166 | 500 |
167 | 501 |
168 // An <code>Instance</code> represents a Dart-language object. | 502 // An <code>Instance</code> represents a Dart-language object. |
169 struct Instance extends Object { | 503 struct Instance extends Object { |
170 placeholder int | 504 placeholder int |
171 } | 505 } |
172 | 506 |
173 | 507 |
174 // A <code>Breakpoint</code> describes a debugger breakpoint. | 508 // A <code>Breakpoint</code> describes a debugger breakpoint. |
175 struct Breakpoint extends Object { | 509 struct Breakpoint extends Object { |
176 breakpointNumber int | 510 breakpointNumber int |
177 resolved bool | 511 resolved bool |
178 location Location | 512 location Location |
179 } | 513 } |
180 | 514 |
181 | 515 |
182 // References to persistent objects in the vm are returned as | |
183 // subclasses of ObjectRef. | |
184 struct ObjectRef extends Response { | |
185 // The object <code>id</code> can be used to refer to a persistent | |
186 // object inside the vm or an isolate. | |
187 id string | |
188 } | |
189 | |
190 | |
191 // A <code>CodeRef</code> encodes a reference to a <code>Code</code> object. | 516 // A <code>CodeRef</code> encodes a reference to a <code>Code</code> object. |
192 struct CodeRef extends ObjectRef { | 517 struct CodeRef extends ObjectRef { |
193 placeholder int | 518 placeholder int |
194 } | 519 } |
195 | 520 |
196 | 521 |
197 struct ClassRef extends ObjectRef { | 522 struct LibraryRef extends ObjectRef { |
198 placeholder int | |
199 } | |
200 | |
201 | |
202 struct TypeArgumentsRef extends ObjectRef { | |
203 placeholder int | 523 placeholder int |
204 } | 524 } |
205 | 525 |
206 | 526 |
207 // A <code>FunctionRef</code> encodes a reference to a <code>Function</code> obj ect. | 527 // A <code>FunctionRef</code> encodes a reference to a <code>Function</code> obj ect. |
208 struct FunctionRef extends ObjectRef { | 528 struct FunctionRef extends ObjectRef { |
209 placeholder int | 529 placeholder int |
210 } | 530 } |
211 | 531 |
212 | 532 |
213 // A <code>FieldRef</code> encodes a reference to a <code>Field</code> object. | 533 // A <code>FieldRef</code> encodes a reference to a <code>Field</code> object. |
214 struct FieldRef extends ObjectRef { | 534 struct FieldRef extends ObjectRef { |
215 placeholder int | 535 placeholder int |
216 } | 536 } |
217 | 537 |
218 | 538 |
219 // A <code>InstanceRef</code> encodes a reference to a <code>Instance</code> obj ect. | |
220 struct InstanceRef extends ObjectRef { | |
221 placeholder int | |
222 } | |
223 | |
224 | |
225 // A <code>ScriptRef</code> encodes a reference to a <code>Script</code> object. | 539 // A <code>ScriptRef</code> encodes a reference to a <code>Script</code> object. |
226 struct ScriptRef extends ObjectRef { | 540 struct ScriptRef extends ObjectRef { |
227 placeholder int | 541 placeholder int |
228 } | 542 } |
229 | 543 |
230 | |
231 struct Class extends Object { | |
232 placeholder int | |
233 } | |
234 | |
235 | |
236 struct TypeArguments extends Object { | |
237 placeholder int | |
238 } | |
239 | |
240 | 544 |
241 // A <code>Location</code> encodes a location withing a dart script. | 545 // A <code>Location</code> encodes a location withing a dart script. |
242 // | 546 // |
243 // TODO(turnidge): Should this really be broken out as its own type? | 547 // TODO(turnidge): Should this really be broken out as its own type? |
244 // If so, we should use it more consistently in the api. For example, | 548 // If so, we should use it more consistently in the api. For example, |
245 // in Frame. | 549 // in Frame. |
246 struct Location { | 550 struct Location { |
247 script ScriptRef | 551 script ScriptRef |
248 tokenPos int | 552 tokenPos int |
249 } | 553 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
385 } | 689 } |
386 | 690 |
387 | 691 |
388 struct Metric extends Response { | 692 struct Metric extends Response { |
389 name string | 693 name string |
390 description string | 694 description string |
391 } | 695 } |
392 | 696 |
393 | 697 |
394 struct Gauge extends Metric { | 698 struct Gauge extends Metric { |
395 value double | 699 value float |
Cutch
2015/04/02 18:11:41
why the switch from double to float?
turnidge
2015/04/02 18:27:30
The tool expects this.
| |
396 min double | 700 min float |
397 max double | 701 max float |
398 } | 702 } |
399 | 703 |
400 | 704 |
401 struct Counter extends Metric { | 705 struct Counter extends Metric { |
402 value double | 706 value float |
403 } | 707 } |
404 | 708 |
405 | 709 |
406 // A <code>GCOption</code> is used to indicate which form of garbage | 710 // A <code>GCOption</code> is used to indicate which form of garbage |
407 // collection is requested. | 711 // collection is requested. |
408 enum GCOption { | 712 enum GCOption { |
409 full | 713 full |
410 } | 714 } |
411 | 715 |
412 // A <code>StepOption</code> is used to indicate which form of | 716 // A <code>StepOption</code> is used to indicate which form of |
(...skipping 10 matching lines...) Expand all Loading... | |
423 UserVM | 727 UserVM |
424 UserOnly | 728 UserOnly |
425 VMUser | 729 VMUser |
426 VMOnly | 730 VMOnly |
427 None | 731 None |
428 } | 732 } |
429 | 733 |
430 // A <code>MetricSelector</code> is used to indicate which list of metrics | 734 // A <code>MetricSelector</code> is used to indicate which list of metrics |
431 // should be retrieved from an isolate. | 735 // should be retrieved from an isolate. |
432 enum MetricSelector { | 736 enum MetricSelector { |
433 Dart, | 737 Dart |
434 Native, | 738 Native |
435 } | 739 } |
740 | |
741 | |
742 struct _EchoResponse extends Response { | |
743 text string | |
744 } | |
OLD | NEW |