Unverified Commit 24e2b238 authored by Danny Tuppeny's avatar Danny Tuppeny Committed by GitHub

Send an event at startup with the protocol version and pid (#17873)

* Send an event at startup with the protocol version and pid

The pid will help with some of the issues of terminate the process when launched through a shell script and the version will allow clients to make decisions about supported features.

I've also bumped the protocol version number for two reasons:

1. This change
2. We didn't increase it when we added the previous emulator commands
parent 514701fe
...@@ -28,7 +28,7 @@ import '../runner/flutter_command.dart'; ...@@ -28,7 +28,7 @@ import '../runner/flutter_command.dart';
import '../tester/flutter_tester.dart'; import '../tester/flutter_tester.dart';
import '../vmservice.dart'; import '../vmservice.dart';
const String protocolVersion = '0.2.0'; const String protocolVersion = '0.3.0';
/// A server process command. This command will start up a long-lived server. /// A server process command. This command will start up a long-lived server.
/// It reads JSON-RPC based commands from stdin, executes them, and returns /// It reads JSON-RPC based commands from stdin, executes them, and returns
...@@ -242,6 +242,14 @@ class DaemonDomain extends Domain { ...@@ -242,6 +242,14 @@ class DaemonDomain extends Domain {
registerHandler('version', version); registerHandler('version', version);
registerHandler('shutdown', shutdown); registerHandler('shutdown', shutdown);
sendEvent(
'daemon.connected',
<String, dynamic>{
'version': protocolVersion,
'pid': pid,
},
);
_subscription = daemon.notifyingLogger.onMessage.listen((LogMessage message) { _subscription = daemon.notifyingLogger.onMessage.listen((LogMessage message) {
if (daemon.logToStdout) { if (daemon.logToStdout) {
if (message.level == 'status') { if (message.level == 'status') {
......
...@@ -209,7 +209,8 @@ void main() { ...@@ -209,7 +209,8 @@ void main() {
notifyingLogger: notifyingLogger, notifyingLogger: notifyingLogger,
); );
final Map<String, dynamic> response = await responses.stream.first; final Map<String, dynamic> response =
await responses.stream.skipWhile(_isConnectedEvent).first;
expect(response['event'], 'daemon.showMessage'); expect(response['event'], 'daemon.showMessage');
expect(response['params'], isMap); expect(response['params'], isMap);
expect(response['params'], containsPair('level', 'warning')); expect(response['params'], containsPair('level', 'warning'));
...@@ -249,7 +250,7 @@ void main() { ...@@ -249,7 +250,7 @@ void main() {
daemon.deviceDomain.addDeviceDiscoverer(discoverer); daemon.deviceDomain.addDeviceDiscoverer(discoverer);
discoverer.addDevice(new MockAndroidDevice()); discoverer.addDevice(new MockAndroidDevice());
return responses.stream.first.then((Map<String, dynamic> response) { return responses.stream.skipWhile(_isConnectedEvent).first.then((Map<String, dynamic> response) {
expect(response['event'], 'device.added'); expect(response['event'], 'device.added');
expect(response['params'], isMap); expect(response['params'], isMap);
...@@ -322,6 +323,8 @@ void main() { ...@@ -322,6 +323,8 @@ void main() {
bool _notEvent(Map<String, dynamic> map) => map['event'] == null; bool _notEvent(Map<String, dynamic> map) => map['event'] == null;
bool _isConnectedEvent(Map<String, dynamic> map) => map['event'] == 'daemon.connected';
class MockAndroidWorkflow extends AndroidWorkflow { class MockAndroidWorkflow extends AndroidWorkflow {
MockAndroidWorkflow({ this.canListDevices: true }); MockAndroidWorkflow({ this.canListDevices: true });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment