mojo/discovery: change to use args from mojo application context

  Mojo app should not use os.Args since it may contain flags for
  for mojo system. Instead we need to use mojo context.Args.

MultiPart: 2/3

Change-Id: I7f60412cc44f3c8c17ebdddf7576b3bd69b6c4c6
diff --git a/Makefile b/Makefile
index 940f314..496ce24 100644
--- a/Makefile
+++ b/Makefile
@@ -32,7 +32,7 @@
 	pub upgrade
 
 .PHONY: build
-build: packages $(DISCOVERY_BUILD_DIR)/discovery.mojo gen-mojom
+build: packages gen-mojom $(DISCOVERY_BUILD_DIR)/discovery.mojo
 
 .PHONY: test
 test: discovery-test
diff --git a/go/src/vanadium/discovery/discovery.go b/go/src/vanadium/discovery/discovery.go
index 86fce64..91cf623 100644
--- a/go/src/vanadium/discovery/discovery.go
+++ b/go/src/vanadium/discovery/discovery.go
@@ -36,12 +36,12 @@
 	impl     *internal.DiscoveryService
 }
 
-func (d *discoveryDelegate) Initialize(c application.Context) {
+func (d *discoveryDelegate) Initialize(mctx application.Context) {
 	// TODO(bjornick): Calling init multiple times in the same process
 	// will be bad.  For now, this is ok because this is the only
 	// vanadium service that will be used in the demos and each go library
 	// will be in its own process.
-	d.ctx, d.shutdown = v23.Init()
+	d.ctx, d.shutdown = v23.Init(mctx)
 	d.impl = internal.NewDiscoveryService(d.ctx)
 }
 
diff --git a/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart b/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart
index 60a3e41..ced6cc3 100644
--- a/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart
+++ b/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart
@@ -26,7 +26,9 @@
   static Service deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -195,7 +197,9 @@
   static Error deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -277,7 +281,9 @@
   static AdvertiserAdvertiseParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -368,7 +374,9 @@
   static AdvertiserAdvertiseResponseParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -442,7 +450,9 @@
   static AdvertiserStopParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -508,7 +518,9 @@
   static ScannerScanParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -580,7 +592,9 @@
   static ScannerScanResponseParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -654,7 +668,9 @@
   static ScannerStopParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -719,7 +735,9 @@
   static ScanHandlerFoundParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }
 
@@ -785,7 +803,9 @@
   static ScanHandlerLostParams deserialize(bindings.Message message) {
     var decoder = new bindings.Decoder(message);
     var result = decode(decoder);
-    decoder.excessHandles.forEach((h) => h.close());
+    if (decoder.excessHandles != null) {
+      decoder.excessHandles.forEach((h) => h.close());
+    }
     return result;
   }