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

Side by Side Diff: sdk/lib/vmservice/client.dart

Issue 2980733003: Introduced support for external services registration in the ServiceProtocol (Closed)
Patch Set: Address comments Created 3 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
« no previous file with comments | « runtime/vm/service_event.cc ('k') | sdk/lib/vmservice/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 dart._vmservice; 5 part of dart._vmservice;
6 6
7 typedef void ClientServiceHandle(Message response);
8
7 // A service client. 9 // A service client.
8 abstract class Client { 10 abstract class Client {
9 final VMService service; 11 final VMService service;
10 final bool sendEvents; 12 final bool sendEvents;
13
14 /// A set streamIds which describes the streams the client is connected to
11 final Set<String> streams = new Set<String>(); 15 final Set<String> streams = new Set<String>();
12 16
17 /// Services registered and their aliases
18 /// key: service
19 /// value: alias
20 final Map<String, String> services = new Map<String, String>();
21
22 /// Callbacks registered for service invocations set to the client
23 /// key: RPC id used for the request
24 /// value: callback that should be invoked
25 final Map<String, ClientServiceHandle> serviceHandles =
26 new Map<String, ClientServiceHandle>();
27
13 Client(this.service, {bool sendEvents: true}) : this.sendEvents = sendEvents { 28 Client(this.service, {bool sendEvents: true}) : this.sendEvents = sendEvents {
14 service._addClient(this); 29 service._addClient(this);
15 } 30 }
16 31
17 // Disconnects the client. 32 // Disconnects the client.
18 disconnect(); 33 disconnect();
19 34
20 /// When implementing, call [close] when the network connection closes. 35 /// When implementing, call [close] when the network connection closes.
21 void close() { 36 void close() {
22 service._removeClient(this); 37 service._removeClient(this);
23 } 38 }
24 39
25 /// Call to process a message. Response will be posted with 'seq'. 40 /// Call to process a request. Response will be posted with 'seq'.
26 void onMessage(var seq, Message message) { 41 void onRequest(Message message) {
27 try { 42 // In JSON-RPC 2.0 messages with and id are Request and must be answered
28 // Send message to service. 43 // http://www.jsonrpc.org/specification#notification
29 service.route(message).then((response) { 44 service.routeRequest(message).then((response) => post(response));
30 // Call post when the response arrives. 45 }
31 post(response); 46
32 }); 47 void onResponse(Message message) {
33 } catch (e, st) { 48 service.routeResponse(message);
34 message.setErrorResponse(kInternalError, 'Unexpected exception:$e\n$st'); 49 }
35 post(message.response); 50
36 } 51 /// Call to process a notification. Response will not be posted.
52 void onNotification(Message message) {
53 // In JSON-RPC 2.0 messages without an id are Notification
54 // and should not be answered
55 // http://www.jsonrpc.org/specification#notification
56 service.routeRequest(message);
37 } 57 }
38 58
39 // Sends a result to the client. Implemented in subclasses. 59 // Sends a result to the client. Implemented in subclasses.
40 void post(dynamic result); 60 void post(dynamic result);
41 61
42 dynamic toJson() { 62 dynamic toJson() {
43 return {}; 63 return {};
44 } 64 }
45 } 65 }
OLDNEW
« no previous file with comments | « runtime/vm/service_event.cc ('k') | sdk/lib/vmservice/message.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698