Skip to content

Commit 2b61039

Browse files
author
Anna Gringauze
authored
Batch debug events sent from injected client to dwds (#1487)
* Batch debug events from injected client to dwds Flutter framework sends frequent frame events using `developer.postEvent`. In scenarios where we have to use SSE between the browser and dwds this leads to hign network load and slows down debugging. Batch and send debug events every 1000ms instead. Closes: #1466 * Updated webdev to run with the current dwds, build * Update analyzer version to remove build warning * Resolved merge conflict * Update parsing libraries.json * Fix BatcheStreamController.close() not terminating * Addressed CR comments * Build * Addressed CR comments
1 parent 02776ac commit 2b61039

16 files changed

+1493
-229
lines changed

dwds/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
- Remove dead code for reading `'dart.developer.registerExtension'` and
1212
`'dart.developer.postEvent'` events from the chrome console. These messages
1313
haven't been written to the console since dwds v11.1.0 and Dart SDK v2.14.0.
14+
- Batch debug events sent from injected client to dwds to relieve network load.
15+
- Update `_fe_analyzer_shared` version to `33.0.0`
1416

1517
**Breaking changes:**
1618

dwds/lib/data/debug_event.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
// @dart = 2.9
66

7+
import 'package:built_collection/built_collection.dart';
78
import 'package:built_value/built_value.dart';
89
import 'package:built_value/serializer.dart';
910

@@ -22,3 +23,17 @@ abstract class DebugEvent implements Built<DebugEvent, DebugEventBuilder> {
2223

2324
int get timestamp;
2425
}
26+
27+
/// A batched group of events, currently always Debugger.scriptParsed
28+
abstract class BatchedDebugEvents
29+
implements Built<BatchedDebugEvents, BatchedDebugEventsBuilder> {
30+
static Serializer<BatchedDebugEvents> get serializer =>
31+
_$batchedDebugEventsSerializer;
32+
33+
factory BatchedDebugEvents([Function(BatchedDebugEventsBuilder) updates]) =
34+
_$BatchedDebugEvents;
35+
36+
BatchedDebugEvents._();
37+
38+
BuiltList<DebugEvent> get events;
39+
}

dwds/lib/data/debug_event.g.dart

Lines changed: 140 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dwds/lib/data/serializers.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ part 'serializers.g.dart';
2222
/// Serializers for all the types used in DWDS communication.
2323
@SerializersFor([
2424
BatchedEvents,
25+
BatchedDebugEvents,
2526
BuildResult,
2627
ConnectRequest,
2728
DebugEvent,

dwds/lib/data/serializers.g.dart

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dwds/lib/src/handlers/dev_handler.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,10 @@ class DevHandler {
266266
await _handleIsolateExit(appConnection);
267267
} else if (message is IsolateStart) {
268268
await _handleIsolateStart(appConnection, injectedConnection);
269+
} else if (message is BatchedDebugEvents) {
270+
await _servicesByAppId[appConnection.request.appId]
271+
?.chromeProxyService
272+
?.parseBatchedDebugEvents(message);
269273
} else if (message is DebugEvent) {
270274
await _servicesByAppId[appConnection.request.appId]
271275
?.chromeProxyService

0 commit comments

Comments
 (0)