This reverts commitbc4cb123a8. Reason for revert: breaks crossword simarm tests https://ci.chromium.org/p/dart/builders/ci.sandbox/vm-kernel-precomp-linux-debug-simarm_x64/2619 Original change's description: > Reland "[ VM / DartDev ] Launch DartDev in an isolate within a single main Dart process" > > This CL changes how DartDev is run and how the run command handles executing a Dart program (will port additional commands in a separate CL). Rather than using DartDev to spawn a child process to run user code, the VM will instead launch a DartDev isolate after doing some VM options processing. DartDev will communicate information like exit codes and script/arg pairs with the VM via isolate ports. Once DartDev runs to completion and notifies the VM that a script should be run, the VM will move on to spawning another isolate with user code and continue executing in the same VM process. > > By moving DartDev into an isolate within the same process that user code will eventually run in we're able to resolve the following issues that arose due to signal handling and IPC issues: > > VM hangs when --enable-vm-service is supplied and there are compile time errors (https://github.com/dart-lang/sdk/issues/42630) > Dart daemon spinning in exit code handler / zombie Dart processes (https://github.com/dart-lang/sdk/issues/41978) > Signal handling in children of 'dartdev run' is problematic (https://github.com/dart-lang/sdk/issues/42092) > > This reverts commit3849b5061c. > > Change-Id: I4fd3ba33840771a9f284d733c4a25fac6cde64ca > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154706 > Reviewed-by: Siva Annamalai <asiva@google.com> TBR=bkonyi@google.com,asiva@google.com Change-Id: I649d94c668417f2edbfd7039fa5c876e10dc32fe No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154800 Reviewed-by: Alexander Aprelev <aam@google.com>
A package used to spawn the Dart Developer Service (DDS), which is used to communicate with a Dart VM Service instance and provide extended functionality to the core VM Service Protocol.
Functionality
Existing VM Service clients can issue both HTTP, websocket, and SSE requests to a running DDS instance as if it were an instance of the VM Service itself. If a request corresponds to an RPC defined in the VM Service Protocol, DDS will forward the request and return the response from the VM Service. Requests corresponding to an RPC defined in the DDS Protocol will be handled directly by the DDS instance.
SSE Support
For certain web clients it may be preferrable or required to communicate with DDS using server-sent events (SSE). DDS has a SSE handler listening for requests on /$debugHandler.
SSE and package:vm_service example
import 'package:sse/sse.dart';
import 'package:vm_service/vm_service.dart';
void main() {
// Establish connection with DDS using SSE.
final ddsChannel = SseClient('${ddsUri}\$debugHandler');
// Wait for ddsChannel to be established
await ddsChannel.onOpen.first;
// Initialize VmService using the sink and stream from ddsChannel.
final vmService = VmService(
ddsChannel.stream,
(e) => ddsChannel.sink.add(e),
);
// You're ready to query DDS and the VM service!
print(await vmService.getVersion());
}