| Index: runtime/bin/vmservice/client/lib/service_io.dart
|
| ===================================================================
|
| --- runtime/bin/vmservice/client/lib/service_io.dart (revision 0)
|
| +++ runtime/bin/vmservice/client/lib/service_io.dart (revision 0)
|
| @@ -0,0 +1,50 @@
|
| +// Copyright (c) 2014, 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.
|
| +
|
| +library service_io;
|
| +
|
| +import 'dart:io';
|
| +
|
| +import 'package:observatory/service_common.dart';
|
| +
|
| +// Export the service library.
|
| +export 'package:observatory/service_common.dart';
|
| +
|
| +class _IOWebSocket implements CommonWebSocket {
|
| + WebSocket _webSocket;
|
| +
|
| + void connect(String address,
|
| + void onOpen(),
|
| + void onMessage(dynamic data),
|
| + void onError(),
|
| + void onClose()) {
|
| + WebSocket.connect(address).then((WebSocket socket) {
|
| + _webSocket = socket;
|
| + _webSocket.listen(
|
| + onMessage,
|
| + onError: (dynamic) => onError(),
|
| + onDone: onClose,
|
| + cancelOnError: true);
|
| + onOpen();
|
| + });
|
| + }
|
| +
|
| + bool get isOpen =>
|
| + (_webSocket != null) && (_webSocket.readyState == WebSocket.OPEN);
|
| +
|
| + void send(dynamic data) {
|
| + _webSocket.add(data);
|
| + }
|
| +
|
| + void close() {
|
| + _webSocket.close();
|
| + }
|
| +}
|
| +
|
| +/// The [WebSocketVM] communicates with a Dart VM over WebSocket. The Dart VM
|
| +/// can be embedded in Chromium or standalone. In the case of Chromium, we
|
| +/// make the service requests via the Chrome Remote Debugging Protocol.
|
| +class WebSocketVM extends CommonWebSocketVM {
|
| + WebSocketVM(WebSocketVMTarget target) : super(target, new _IOWebSocket());
|
| +}
|
|
|