Index: mojo/dart/packages/mojo/lib/src/proxy.dart |
diff --git a/mojo/dart/packages/mojo/lib/src/proxy.dart b/mojo/dart/packages/mojo/lib/src/proxy.dart |
index ea1afac78a98a492831e43febe7ea45ec8482283..77197d64fe245bce263bc006a585eec89d3000c0 100644 |
--- a/mojo/dart/packages/mojo/lib/src/proxy.dart |
+++ b/mojo/dart/packages/mojo/lib/src/proxy.dart |
@@ -14,19 +14,27 @@ class ProxyError { |
/// Generated ProxyControl classes implement this interface. |
/// ProxyControl objects are accessible through the [ctrl] field on Proxies. |
-abstract class ProxyControl implements ProxyMessageHandler { |
+abstract class ProxyControl<T> implements ProxyMessageHandler { |
+ // TODO(zra): This is only used by ApplicationConnection.requestService(), so |
+ // try to remove when/after ApplicationConnection is removed/refactored. |
String get serviceName; |
+ |
+ // Currently we don't have impl hooked up to anything for Proxies, but we have |
+ // the field here so that there is a consistent interface with Stubs. By |
+ // having the field here we can also retain the option of hooking a proxy |
+ // up to something other than the remote implementation in the future. |
+ T impl; |
} |
/// Generated Proxy classes extend this base class. |
-class Proxy { |
+class Proxy<T> implements MojoInterface<T> { |
// In general it's probalby better to avoid adding fields and methods to this |
// class. Names added to this class have to be mangled by Mojo bindings |
// generation to avoid name conflicts. |
/// Proxies control the ProxyMessageHandler by way of this [ProxyControl] |
/// object. |
- final ProxyControl ctrl; |
+ final ProxyControl<T> ctrl; |
Proxy(this.ctrl); |
@@ -39,6 +47,14 @@ class Proxy { |
/// ctrl.responseOrError(). If a Mojo interface has a method |
/// 'responseOrError', its name will be mangled to be 'responseOrError_'. |
Future responseOrError(Future f) => ctrl.responseOrError(f); |
+ |
+ /// This getter and setter pair is for convenience and simply forwards to |
+ /// ctrl.impl. If a Mojo interface has a method 'close', its name will be |
+ /// mangled to be 'impl_'. |
+ T get impl => ctrl.impl; |
+ set impl(T impl) { |
+ ctrl.impl = impl; |
+ } |
} |
/// Generated Proxy classes have a factory Proxy.connectToService which takes |
@@ -51,7 +67,8 @@ abstract class ServiceConnector { |
void connectToService(String url, Proxy proxy, [String serviceName]); |
} |
-abstract class ProxyMessageHandler extends core.MojoEventHandler { |
+abstract class ProxyMessageHandler extends core.MojoEventHandler |
+ implements MojoInterfaceControl { |
HashMap<int, Completer> _completerMap = new HashMap<int, Completer>(); |
Completer _errorCompleter = new Completer(); |
Set<Completer> _errorCompleters; |