Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(446)

Side by Side Diff: runtime/vm/service/client.dart

Issue 993613002: Implement 'print', 'up', 'down', and 'frame' commands in the Observatory debugger. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/service.cc ('k') | runtime/vm/service/message.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of vmservice; 5 part of vmservice;
6 6
7 // A service client. 7 // A service client.
8 abstract class Client { 8 abstract class Client {
9 /// A port for receipt of asynchronous service events. 9 /// A port for receipt of asynchronous service events.
10 final RawReceivePort eventPort = new RawReceivePort(); 10 final RawReceivePort eventPort = new RawReceivePort();
11 final VMService service; 11 final VMService service;
12 12
13 Client(this.service) { 13 Client(this.service) {
14 eventPort.handler = (response) { 14 eventPort.handler = (response) {
15 post(null, response); 15 post(null, response);
16 }; 16 };
17 service._addClient(this); 17 service._addClient(this);
18 } 18 }
19 19
20 /// When implementing, call [close] when the network connection closes. 20 /// When implementing, call [close] when the network connection closes.
21 void close() { 21 void close() {
22 eventPort.close(); 22 eventPort.close();
23 service._removeClient(this); 23 service._removeClient(this);
24 } 24 }
25 25
26 /// Call to process a message. Response will be posted with 'seq'. 26 /// Call to process a message. Response will be posted with 'seq'.
27 void onMessage(var seq, Message message) { 27 void onMessage(var seq, Message message) {
28 // Call post when the response arrives. 28 try {
29 message.response.then((response) { 29 // Send message to service.
30 post(seq, response); 30 service.route(message).then((response) {
31 }); 31 // Call post when the response arrives.
32 // Send message to service. 32 post(seq, response);
33 service.route(message); 33 });
34 } catch (e, st) {
35 message.setErrorResponse('Internal error: $e');
36 post(seq, message.response);
37 }
34 } 38 }
35 39
36 /// When implementing, responsible for sending [response] to the client. 40 /// When implementing, responsible for sending [response] to the client.
37 void post(var seq, dynamic response); 41 void post(var seq, dynamic response);
38 42
39 dynamic toJson() { 43 dynamic toJson() {
40 return { 44 return {
41 }; 45 };
42 } 46 }
43 } 47 }
OLDNEW
« no previous file with comments | « runtime/vm/service.cc ('k') | runtime/vm/service/message.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698