| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| part of dart._vmservice; |
| |
| // A service client. |
| abstract class Client { |
| final VMService service; |
| final bool sendEvents; |
| final Set<String> streams = new Set<String>(); |
| |
| Client(this.service, { bool sendEvents: true }) |
| : this.sendEvents = sendEvents { |
| service._addClient(this); |
| } |
| |
| // Disconnects the client. |
| disconnect(); |
| |
| /// When implementing, call [close] when the network connection closes. |
| void close() { |
| service._removeClient(this); |
| } |
| |
| /// Call to process a message. Response will be posted with 'seq'. |
| void onMessage(var seq, Message message) { |
| try { |
| // Send message to service. |
| service.route(message).then((response) { |
| // Call post when the response arrives. |
| post(response); |
| }); |
| } catch (e, st) { |
| message.setErrorResponse( |
| kInternalError, 'Unexpected exception:$e\n$st'); |
| post(message.response); |
| } |
| } |
| |
| // Sends a result to the client. Implemented in subclasses. |
| void post(dynamic result); |
| |
| dynamic toJson() { |
| return { |
| }; |
| } |
| } |