From fc0a265527d34eefad79d6cdadcd7a393fced284 Mon Sep 17 00:00:00 2001 From: Pi Songkuntham Date: Fri, 12 Jul 2019 11:22:38 -0700 Subject: [PATCH 1/5] Created a skeleton for the backend of Dart Debug Extension. --- dwds/lib/src/extension_backend.dart | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 dwds/lib/src/extension_backend.dart diff --git a/dwds/lib/src/extension_backend.dart b/dwds/lib/src/extension_backend.dart new file mode 100644 index 000000000..026c16089 --- /dev/null +++ b/dwds/lib/src/extension_backend.dart @@ -0,0 +1,43 @@ +// Copyright (c) 2019, 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:io'; + +import 'package:shelf/shelf_io.dart' as io; +import 'package:sse/server/sse_handler.dart'; + +SseHandler _sseHandler = SseHandler(Uri.parse('/test')); + +/// A debug extension backend which sets up an SSE handler. +/// +/// This is still a skeleton. The SSE handler simply sends a simple message and +/// prints the response when a client connects. +class ExtensionBackend { + String hostname; + int port; + HttpServer _server; + + ExtensionBackend._(this.hostname, this.port, this._server) { + _listen(); + } + + // Starts the backend on an open port. + static Future start() async { + var server = await io.serve(_sseHandler.handler, 'localhost', 0); + return ExtensionBackend._(server.address.host, server.port, server); + } + + Future close() async { + await _server.close(); + } + + void _listen() async { + var connections = _sseHandler.connections; + while (await connections.hasNext) { + var connection = await connections.next; + connection.sink.add('foo'); + connection.stream.listen(print); + } + } +} From 7f800b390fb9fedfea05359bd97a26f69d090057 Mon Sep 17 00:00:00 2001 From: Pi Songkuntham Date: Fri, 12 Jul 2019 12:57:36 -0700 Subject: [PATCH 2/5] Used HttpMultiServer. --- dwds/lib/src/extension_backend.dart | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dwds/lib/src/extension_backend.dart b/dwds/lib/src/extension_backend.dart index 026c16089..84c2c02d3 100644 --- a/dwds/lib/src/extension_backend.dart +++ b/dwds/lib/src/extension_backend.dart @@ -4,15 +4,16 @@ import 'dart:io'; -import 'package:shelf/shelf_io.dart' as io; +import 'package:http_multi_server/http_multi_server.dart'; +import 'package:shelf/shelf_io.dart'; import 'package:sse/server/sse_handler.dart'; SseHandler _sseHandler = SseHandler(Uri.parse('/test')); -/// A debug extension backend which sets up an SSE handler. +/// A backend for the Dart Debug Extension which sets up an SSE handler. /// -/// This is still a skeleton. The SSE handler simply sends a simple message and -/// prints the response when a client connects. +/// The SSE handler simply sends a simple message and prints the response when +/// a client connects. class ExtensionBackend { String hostname; int port; @@ -24,7 +25,9 @@ class ExtensionBackend { // Starts the backend on an open port. static Future start() async { - var server = await io.serve(_sseHandler.handler, 'localhost', 0); + //var server = await io.serve(_sseHandler.handler, 'localhost', 0); + var server = await HttpMultiServer.bind('localhost', 0); + serveRequests(server, _sseHandler.handler); return ExtensionBackend._(server.address.host, server.port, server); } From fd97006a1df8972d08e3ad8abf4bc07f682b95bd Mon Sep 17 00:00:00 2001 From: Pi Songkuntham Date: Fri, 12 Jul 2019 13:07:49 -0700 Subject: [PATCH 3/5] Grouped devtools and extension_backend into a servers folder. --- dwds/lib/dwds.dart | 2 +- dwds/lib/src/handlers/dev_handler.dart | 2 +- dwds/lib/src/{ => servers}/devtools.dart | 0 dwds/lib/src/{ => servers}/extension_backend.dart | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename dwds/lib/src/{ => servers}/devtools.dart (100%) rename dwds/lib/src/{ => servers}/extension_backend.dart (100%) diff --git a/dwds/lib/dwds.dart b/dwds/lib/dwds.dart index 10c031f05..7e1d63dd3 100644 --- a/dwds/lib/dwds.dart +++ b/dwds/lib/dwds.dart @@ -12,10 +12,10 @@ import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'; import 'src/connections/app_connection.dart'; import 'src/connections/debug_connection.dart'; -import 'src/devtools.dart'; import 'src/handlers/asset_handler.dart'; import 'src/handlers/dev_handler.dart'; import 'src/handlers/injected_handler.dart'; +import 'src/servers/devtools.dart'; export 'src/connections/app_connection.dart' show AppConnection; export 'src/connections/debug_connection.dart' show DebugConnection; diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart index 2a8da4b4c..f15ecf361 100644 --- a/dwds/lib/src/handlers/dev_handler.dart +++ b/dwds/lib/src/handlers/dev_handler.dart @@ -18,9 +18,9 @@ import '../../data/devtools_request.dart'; import '../../data/isolate_events.dart'; import '../../data/serializers.dart'; import '../connections/app_connection.dart'; -import '../devtools.dart'; import '../dwds_vm_client.dart'; import '../handlers/asset_handler.dart'; +import '../servers/devtools.dart'; import '../services/app_debug_services.dart'; import '../services/debug_service.dart'; diff --git a/dwds/lib/src/devtools.dart b/dwds/lib/src/servers/devtools.dart similarity index 100% rename from dwds/lib/src/devtools.dart rename to dwds/lib/src/servers/devtools.dart diff --git a/dwds/lib/src/extension_backend.dart b/dwds/lib/src/servers/extension_backend.dart similarity index 100% rename from dwds/lib/src/extension_backend.dart rename to dwds/lib/src/servers/extension_backend.dart From 5d0c79e97ecd42317094f441ac2e8599dae39f95 Mon Sep 17 00:00:00 2001 From: Pi Songkuntham Date: Fri, 12 Jul 2019 13:12:35 -0700 Subject: [PATCH 4/5] Removed dead code. --- dwds/lib/src/servers/extension_backend.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/dwds/lib/src/servers/extension_backend.dart b/dwds/lib/src/servers/extension_backend.dart index 84c2c02d3..baf0ca80d 100644 --- a/dwds/lib/src/servers/extension_backend.dart +++ b/dwds/lib/src/servers/extension_backend.dart @@ -25,7 +25,6 @@ class ExtensionBackend { // Starts the backend on an open port. static Future start() async { - //var server = await io.serve(_sseHandler.handler, 'localhost', 0); var server = await HttpMultiServer.bind('localhost', 0); serveRequests(server, _sseHandler.handler); return ExtensionBackend._(server.address.host, server.port, server); From cf3c5501ed34e3ce05a60039be0a5776a5b466a6 Mon Sep 17 00:00:00 2001 From: Pi Songkuntham Date: Fri, 12 Jul 2019 13:34:40 -0700 Subject: [PATCH 5/5] Made hostname, port, server immutable. --- dwds/lib/src/servers/extension_backend.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dwds/lib/src/servers/extension_backend.dart b/dwds/lib/src/servers/extension_backend.dart index baf0ca80d..716c4872a 100644 --- a/dwds/lib/src/servers/extension_backend.dart +++ b/dwds/lib/src/servers/extension_backend.dart @@ -15,9 +15,9 @@ SseHandler _sseHandler = SseHandler(Uri.parse('/test')); /// The SSE handler simply sends a simple message and prints the response when /// a client connects. class ExtensionBackend { - String hostname; - int port; - HttpServer _server; + final String hostname; + final int port; + final HttpServer _server; ExtensionBackend._(this.hostname, this.port, this._server) { _listen();