Skip to content

Commit 5b3f799

Browse files
helin24Commit Queue
authored andcommitted
Revert "Revert "Send DAP events through DDS"" - only check for event handler when DDS URI is also set.
Original change reverted due to test failure: #43743 (comment) This reverts commit 02b10e1. Change-Id: Idb2cbffe18342c76d0cc062e5855c10a6df0e8f1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/310780 Reviewed-by: Ben Konyi <[email protected]> Commit-Queue: Helin Shiah <[email protected]>
1 parent e56ef70 commit 5b3f799

File tree

12 files changed

+62
-12
lines changed

12 files changed

+62
-12
lines changed

pkg/dds/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- [DAP] Fixed an issue that could leave breakpoints unresolved when adding/removing other breakpoints in a file.
77
- Fixed a bug that was preventing clients from receiving `IsolateReload` events
88
(see https://dartbug.com/49491).
9+
- Added notifications for DAP events.
910

1011
# 2.9.0
1112
- Updated DDS protocol to version 1.6.

pkg/dds/lib/src/dap/adapters/dds_hosted_adapter.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ class DdsHostedAdapter extends DartDebugAdapter<DartLaunchRequestArguments,
4545
@override
4646
bool get terminateOnVmServiceClose => true;
4747

48+
final _dapEventsController = StreamController<Event>();
49+
4850
@override
4951
Future<void> debuggerConnected(vm.VM vmInfo) async {}
5052

@@ -121,4 +123,13 @@ class DdsHostedAdapter extends DartDebugAdapter<DartLaunchRequestArguments,
121123
throw potentialException;
122124
}
123125
}
126+
127+
@override
128+
void sendEventToChannel(Event event) {
129+
_dapEventsController.add(event);
130+
}
131+
132+
void setEventHandler(void Function(Event) eventHandler) {
133+
_dapEventsController.stream.listen(eventHandler);
134+
}
124135
}

pkg/dds/lib/src/dap/base_debug_adapter.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,10 @@ abstract class BaseDebugAdapter<TLaunchArgs extends LaunchRequestArguments,
205205
event: eventType ?? eventTypes[body.runtimeType]!,
206206
body: body,
207207
);
208+
sendEventToChannel(event);
209+
}
210+
211+
void sendEventToChannel(Event event) {
208212
_channel.sendEvent(event);
209213
}
210214

pkg/dds/lib/src/dap_handler.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'dart:async';
6+
7+
import 'package:dds_service_extensions/dap.dart';
68
import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
79

810
import '../dap.dart';
@@ -41,8 +43,20 @@ class DapHandler {
4143
};
4244
}
4345

46+
_handleEvent(Event event) {
47+
dds.streamManager.streamNotify(DapEventStreams.kDAP, {
48+
'streamId': DapEventStreams.kDAP,
49+
'event': {
50+
'kind': DapEventKind.kDAPEvent,
51+
'timestamp': DateTime.now().millisecondsSinceEpoch,
52+
'dapData': event,
53+
},
54+
});
55+
}
56+
4457
Future<void> _startAdapter(DdsHostedAdapter adapter) async {
4558
adapter.ddsUri = dds.uri;
59+
adapter.setEventHandler(_handleEvent);
4660

4761
// TODO(helin24): Most likely we'll want the client to do these
4862
// initialization steps so that clients can differentiate capabilities. This

pkg/dds/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dependencies:
1313
async: ^2.4.1
1414
browser_launcher: ^1.0.0
1515
collection: ^1.15.0
16-
dds_service_extensions: ^1.3.0
16+
dds_service_extensions: ^1.6.0
1717
dap: ^1.1.0
1818
devtools_shared: ^2.14.1
1919
http_multi_server: ^3.0.0
@@ -27,7 +27,7 @@ dependencies:
2727
sse: ^4.0.0
2828
stack_trace: ^1.10.0
2929
stream_channel: ^2.0.0
30-
vm_service: '>=11.0.0 <12.0.0'
30+
vm_service: '>=11.7.2 <12.0.0'
3131
web_socket_channel: ^2.0.0
3232

3333
# We use 'any' version constraints here as we get our package versions from

pkg/dds/test/dap_handler_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'dart:io';
77

88
import 'package:dap/dap.dart';
99
import 'package:dds/dds.dart';
10-
import 'package:dds_service_extensions/src/dap.dart';
10+
import 'package:dds_service_extensions/dap.dart';
1111
import 'package:test/test.dart';
1212
import 'package:vm_service/vm_service_io.dart';
1313

pkg/dds_service_extensions/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 1.6.0
2+
- Made DAP extensions methods accessible in lib.
3+
14
## 1.5.0
25
- Added `DdsExtension.postEvent`.
36

pkg/dds_service_extensions/lib/src/dap.dart renamed to pkg/dds_service_extensions/lib/dap.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ extension DapExtension on vm.VmService {
2929
vm.addTypeFactory('DapResponse', DapResponse.parse);
3030
_factoriesRegistered = true;
3131
}
32+
33+
Stream<vm.Event> get onDAPEvent => onEvent(DapEventStreams.kDAP);
3234
}
3335

3436
class DapResponse extends vm.Response {
@@ -50,3 +52,19 @@ class DapResponse extends vm.Response {
5052

5153
final dap.Response dapResponse;
5254
}
55+
56+
extension DapEvents on vm.Event {
57+
dap.Event get dapData {
58+
assert(json != null);
59+
return dap.Event.fromJson(json!['dapData']);
60+
}
61+
}
62+
63+
abstract class DapEventStreams extends vm.EventStreams {
64+
static const String kDAP = 'DAP';
65+
}
66+
67+
abstract class DapEventKind extends vm.EventKind {
68+
/// Notification that a DAP event occurred.
69+
static const String kDAPEvent = 'DAPEvent';
70+
}

pkg/dds_service_extensions/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: dds_service_extensions
2-
version: 1.5.0
2+
version: 1.6.0
33
description: >-
44
Extension methods for `package:vm_service`, used to make requests a
55
Dart Development Service (DDS) instance.
@@ -11,7 +11,7 @@ environment:
1111
dependencies:
1212
async: ^2.4.1
1313
dap: ^1.0.0
14-
vm_service: ^11.0.0
14+
vm_service: ^11.7.2
1515

1616
# We use 'any' version constraints here as we get our package versions from
1717
# the dart-lang/sdk repo's DEPS file. Note that this is a special case; the

pkg/vm_service/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 11.7.2
2+
- Make Event classes abstract to permit `dap` event stream extensions.
3+
14
## 11.7.1
25
- Expose RPC error codes that were defined in `package:dds`.
36

0 commit comments

Comments
 (0)