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

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

Issue 340443006: Add support for asynchronous event notification to the observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 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/constants.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 /// Port that lives as long as the network client. 9 /// A port for receipt of asynchronous service events.
10 final RawReceivePort receivePort = 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 receivePort.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 receivePort.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 // Call post when the response arrives.
29 message.response.then((response) { 29 message.response.then((response) {
30 post(seq, response); 30 post(seq, response);
31 }); 31 });
32 // Send message to service. 32 // Send message to service.
33 service.route(message); 33 service.route(message);
34 } 34 }
35 35
36 /// When implementing, responsible for sending [response] to the client. 36 /// When implementing, responsible for sending [response] to the client.
37 void post(var seq, String response); 37 void post(var seq, String response);
38 38
39 dynamic toJson() { 39 dynamic toJson() {
40 return { 40 return {
41 }; 41 };
42 } 42 }
43 } 43 }
OLDNEW
« no previous file with comments | « runtime/vm/service.cc ('k') | runtime/vm/service/constants.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698