blob: 8987a78fadecf9c8b5b49ec9c8ef1ee0f85af923 [file] [log] [blame]
// // Copyright (c) 2022, 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.
//
// import 'dart:async';
// import 'dart:typed_data';
//
// import 'package:vm_service/vm_service.dart';
// import 'package:vm_service/vm_service_io.dart';
//
// Future<List<ByteData>> loadFromUri(Uri uri) async {
// final Uri wsUri;
// if (uri.isScheme("ws")) {
// wsUri = uri;
// } else {
// if (uri.path.isEmpty || uri.path == "/") {
// uri = uri.replace(path: "/ws");
// } else if (uri.path.endsWith("/")) {
// uri = uri.replace(path: "${uri.path}ws");
// } else {
// uri = uri.replace(path: "${uri.path}/ws");
// }
// wsUri = uri.replace(scheme: 'ws');
// }
// final service = await vmServiceConnectUri(wsUri.toString());
// try {
// final r = await _getHeapsnapshot(service);
// return r;
// } finally {
// await service.dispose();
// }
// }
//
// Future<List<ByteData>> _getHeapsnapshot(VmService service) async {
// final vm = await service.getVM();
// final vmIsolates = vm.isolates!;
// if (vmIsolates.isEmpty) {
// throw 'Could not find first isolate (expected it to be running already)';
// }
// final isolateRef = vmIsolates.first;
//
// await service.streamListen(EventStreams.kHeapSnapshot);
//
// final chunks = <ByteData>[];
// final done = Completer();
// late StreamSubscription streamSubscription;
// streamSubscription = service.onHeapSnapshotEvent.listen((e) async {
// chunks.add(e.data!);
// if (e.last!) {
// await service.streamCancel(EventStreams.kHeapSnapshot);
// await streamSubscription.cancel();
// done.complete();
// }
// });
//
// await service.requestHeapSnapshot(isolateRef.id!);
// await done.future;
//
// return chunks;
// }