Index: mojo/public/dart/src/service_provider.dart |
diff --git a/mojo/public/dart/src/service_provider.dart b/mojo/public/dart/src/service_provider.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2ed507106be0c13eb493b3223e8c34eea3e63df2 |
--- /dev/null |
+++ b/mojo/public/dart/src/service_provider.dart |
@@ -0,0 +1,30 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+part of bindings; |
+ |
+typedef Interface InterfaceFactory(core.MojoMessagePipeEndpoint endpoint); |
+ |
+class ServiceProvider extends service_provider.ServiceProviderInterface { |
+ InterfaceFactory _interfaceFactory; |
+ List<Interface> _interfaces; |
+ |
+ ServiceProvider(core.MojoMessagePipeEndpoint endpoint, |
+ InterfaceFactory interfaceFactory) : |
+ _interfaceFactory = interfaceFactory, |
+ _interfaces = [], |
+ super(endpoint); |
+ |
+ connectToService(String interfaceName, core.MojoHandle pipe) { |
+ var endpoint = new core.MojoMessagePipeEndpoint(pipe); |
+ var interfaceImpl = _interfaceFactory(endpoint); |
+ interfaceImpl.listen(); |
+ _interfaces.add(interfaceImpl); |
+ } |
+ |
+ void close() { |
+ _interfaces.forEach((i) => i.close()); |
+ super.close(); |
+ } |
+} |