Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Side by Side Diff: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl

Issue 1964193002: Dart: Refactors Proxies (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Address comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 {%- for method in interface.methods %} 1 {%- for method in interface.methods %}
2 const int _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name = {{method.ordinal}}; 2 const int _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name = {{method.ordinal}};
3 {%- endfor %} 3 {%- endfor %}
4 4
5 {#--- Interface Enums #} 5 {#--- Interface Enums #}
6 {%- from "enum_definition.tmpl" import enum_def -%} 6 {%- from "enum_definition.tmpl" import enum_def -%}
7 {%- for enum in interface.enums %} 7 {%- for enum in interface.enums %}
8 {{ enum_def(enum, typepkg, package) }} 8 {{ enum_def(enum, typepkg, package) }}
9 {%- endfor %} 9 {%- endfor %}
10 10
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 {%- endif %} 56 {%- endif %}
57 {%- endfor %} 57 {%- endfor %}
58 58
59 {#--- Interface Constants #} 59 {#--- Interface Constants #}
60 {%- for constant in interface.constants %} 60 {%- for constant in interface.constants %}
61 static const {{constant.kind|dart_type}} {{constant|name}} = {{constant.resolv ed_value}}; 61 static const {{constant.kind|dart_type}} {{constant|name}} = {{constant.resolv ed_value}};
62 {%- endfor %} 62 {%- endfor %}
63 } 63 }
64 64
65 65
66 class _{{interface|name}}ProxyImpl extends bindings.Proxy { 66 class _{{interface|name}}ProxyControl extends bindings.ProxyMessageHandler
67 _{{interface|name}}ProxyImpl.fromEndpoint( 67 implements bindings.ProxyControl {
68 _{{interface|name}}ProxyControl.fromEndpoint(
68 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint); 69 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint);
69 70
70 _{{interface|name}}ProxyImpl.fromHandle(core.MojoHandle handle) : 71 _{{interface|name}}ProxyControl.fromHandle(
71 super.fromHandle(handle); 72 core.MojoHandle handle) : super.fromHandle(handle);
72 73
73 _{{interface|name}}ProxyImpl.unbound() : super.unbound(); 74 _{{interface|name}}ProxyControl.unbound() : super.unbound();
74
75 static _{{interface|name}}ProxyImpl newFromEndpoint(
76 core.MojoMessagePipeEndpoint endpoint) {
77 assert(endpoint.setDescription("For _{{interface|name}}ProxyImpl"));
78 return new _{{interface|name}}ProxyImpl.fromEndpoint(endpoint);
79 }
80 75
81 {{descpkg}}ServiceDescription get serviceDescription => 76 {{descpkg}}ServiceDescription get serviceDescription =>
82 new _{{interface|name}}ServiceDescription(); 77 new _{{interface|name}}ServiceDescription();
83 78
79 String get serviceName => {{interface|name}}.serviceName;
80
81 @override
84 void handleResponse(bindings.ServiceMessage message) { 82 void handleResponse(bindings.ServiceMessage message) {
85 switch (message.header.type) { 83 switch (message.header.type) {
86 {%- for method in interface.methods %} 84 {%- for method in interface.methods %}
87 {%- if method.response_parameters != None %} 85 {%- if method.response_parameters != None %}
88 {%- set response_struct = method.response_param_struct %} 86 {%- set response_struct = method.response_param_struct %}
89 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: 87 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name:
90 var r = {{response_struct|name}}.deserialize( 88 var r = {{response_struct|name}}.deserialize(
91 message.payload); 89 message.payload);
92 if (!message.header.hasRequestId) { 90 if (!message.header.hasRequestId) {
93 proxyError("Expected a message with a valid request Id."); 91 proxyError("Expected a message with a valid request Id.");
(...skipping 14 matching lines...) Expand all
108 break; 106 break;
109 {%- endif %} 107 {%- endif %}
110 {%- endfor %} 108 {%- endfor %}
111 default: 109 default:
112 proxyError("Unexpected message type: ${message.header.type}"); 110 proxyError("Unexpected message type: ${message.header.type}");
113 close(immediate: true); 111 close(immediate: true);
114 break; 112 break;
115 } 113 }
116 } 114 }
117 115
116 @override
118 String toString() { 117 String toString() {
119 var superString = super.toString(); 118 var superString = super.toString();
120 return "_{{interface|name}}ProxyImpl($superString)"; 119 return "_{{interface|name}}ProxyControl($superString)";
121 } 120 }
122 } 121 }
123 122
124 123
125 class _{{interface|name}}ProxyCalls implements {{interface|name}} { 124 class {{interface|name}}Proxy extends bindings.Proxy
126 {%- if interface.methods %} 125 implements {{interface|name}} {
127 _{{interface|name}}ProxyImpl _proxyImpl; 126 {{interface|name}}Proxy.fromEndpoint(
127 core.MojoMessagePipeEndpoint endpoint)
128 : super(new _{{interface|name}}ProxyControl.fromEndpoint(endpoint));
128 129
129 _{{interface|name}}ProxyCalls(this._proxyImpl); 130 {{interface|name}}Proxy.fromHandle(core.MojoHandle handle)
130 {%- else %} 131 : super(new _{{interface|name}}ProxyControl.fromHandle(handle));
131 _{{interface|name}}ProxyCalls(_{{interface|name}}ProxyImpl _);
132 {%- endif %}
133 132
134 {%- for method in interface.methods %} 133 {{interface|name}}Proxy.unbound()
135 {%- if method.response_parameters == None %} 134 : super(new _{{interface|name}}ProxyControl.unbound());
136 void {{method|name}}(
137 {%- for parameter in method.parameters -%}
138 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% endif %}
139 {%- endfor -%}
140 {%- set request_struct = method.param_struct -%}
141 ) {
142 if (!_proxyImpl.isBound) {
143 _proxyImpl.proxyError("The Proxy is closed.");
144 return;
145 }
146 var params = new {{request_struct|name}}();
147 {%- for parameter in method.parameters %}
148 params.{{parameter|name}} = {{parameter|name}};
149 {%- endfor %}
150 _proxyImpl.sendMessage(params, _{{interface|name|lower_camel}}Method{{meth od|name|upper_camel}}Name);
151 }
152 {%- else %}
153 {%- set request_struct = method.param_struct %}
154 dynamic {{method|name}}(
155 {%- for parameter in method.parameters -%}
156 {{parameter.kind|dart_type}} {{parameter|name}},
157 {%- endfor -%}
158 [Function responseFactory = null]) {
159 var params = new {{request_struct|name}}();
160 {%- for parameter in method.parameters %}
161 params.{{parameter|name}} = {{parameter|name}};
162 {%- endfor %}
163 return _proxyImpl.sendMessageWithRequestId(
164 params,
165 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name,
166 -1,
167 bindings.MessageHeader.kMessageExpectsResponse);
168 }
169 {%- endif %}
170 {%- endfor %}
171 }
172 135
173 136 static {{interface|name}}Proxy newFromEndpoint(
174 class {{interface|name}}Proxy implements bindings.ProxyBase { 137 core.MojoMessagePipeEndpoint endpoint) {
175 final bindings.Proxy impl; 138 assert(endpoint.setDescription("For {{interface|name}}Proxy"));
176 {{interface|name}} ptr; 139 return new {{interface|name}}Proxy.fromEndpoint(endpoint);
177
178 {{interface|name}}Proxy(_{{interface|name}}ProxyImpl proxyImpl) :
179 impl = proxyImpl,
180 ptr = new _{{interface|name}}ProxyCalls(proxyImpl);
181
182 {{interface|name}}Proxy.fromEndpoint(
183 core.MojoMessagePipeEndpoint endpoint) :
184 impl = new _{{interface|name}}ProxyImpl.fromEndpoint(endpoint) {
185 ptr = new _{{interface|name}}ProxyCalls(impl);
186 }
187
188 {{interface|name}}Proxy.fromHandle(core.MojoHandle handle) :
189 impl = new _{{interface|name}}ProxyImpl.fromHandle(handle) {
190 ptr = new _{{interface|name}}ProxyCalls(impl);
191 }
192
193 {{interface|name}}Proxy.unbound() :
194 impl = new _{{interface|name}}ProxyImpl.unbound() {
195 ptr = new _{{interface|name}}ProxyCalls(impl);
196 } 140 }
197 141
198 factory {{interface|name}}Proxy.connectToService( 142 factory {{interface|name}}Proxy.connectToService(
199 bindings.ServiceConnector s, String url, [String serviceName]) { 143 bindings.ServiceConnector s, String url, [String serviceName]) {
200 {{interface|name}}Proxy p = new {{interface|name}}Proxy.unbound(); 144 {{interface|name}}Proxy p = new {{interface|name}}Proxy.unbound();
201 s.connectToService(url, p, serviceName); 145 s.connectToService(url, p, serviceName);
202 return p; 146 return p;
203 } 147 }
204 148
205 static {{interface|name}}Proxy newFromEndpoint( 149 {% for method in interface.methods %}
206 core.MojoMessagePipeEndpoint endpoint) { 150 {%- if method.response_parameters == None %}
207 assert(endpoint.setDescription("For {{interface|name}}Proxy")); 151 void {{method|name}}(
208 return new {{interface|name}}Proxy.fromEndpoint(endpoint); 152 {%- for parameter in method.parameters -%}
153 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %}
154 {%- endfor -%}
155 {%- set request_struct = method.param_struct -%}
156 ) {
157 if (!ctrl.isBound) {
158 ctrl.proxyError("The Proxy is closed.");
159 return;
160 }
161 var params = new {{request_struct|name}}();
162 {%- for parameter in method.parameters %}
163 params.{{parameter|name}} = {{parameter|name}};
164 {%- endfor %}
165 ctrl.sendMessage(params,
166 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name);
209 } 167 }
210 168 {%- else %}
211 String get serviceName => {{interface|name}}.serviceName; 169 {%- set request_struct = method.param_struct %}
212 170 dynamic {{method|name}}(
213 Future close({bool immediate: false}) => impl.close(immediate: immediate); 171 {%- for parameter in method.parameters -%}
214 172 {{parameter.kind|dart_type}} {{parameter|name}},
215 Future responseOrError(Future f) => impl.responseOrError(f); 173 {%- endfor -%}
216 174 [Function responseFactory = null]) {
217 Future get errorFuture => impl.errorFuture; 175 var params = new {{request_struct|name}}();
218 176 {%- for parameter in method.parameters %}
219 int get version => impl.version; 177 params.{{parameter|name}} = {{parameter|name}};
220 178 {%- endfor %}
221 Future<int> queryVersion() => impl.queryVersion(); 179 return ctrl.sendMessageWithRequestId(
222 180 params,
223 void requireVersion(int requiredVersion) { 181 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name,
224 impl.requireVersion(requiredVersion); 182 -1,
183 bindings.MessageHeader.kMessageExpectsResponse);
225 } 184 }
226 185 {%- endif %}
227 String toString() { 186 {%- endfor %}
228 return "{{interface|name}}Proxy($impl)";
229 }
230 } 187 }
231 188
232 189
233 class {{interface|name}}Stub extends bindings.Stub { 190 class {{interface|name}}Stub extends bindings.Stub {
234 {{interface|name}} _impl; 191 {{interface|name}} _impl;
235 192
236 {{interface|name}}Stub.fromEndpoint( 193 {{interface|name}}Stub.fromEndpoint(
237 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) 194 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl])
238 : super.fromEndpoint(endpoint, autoBegin: impl != null) { 195 : super.fromEndpoint(endpoint, autoBegin: impl != null) {
239 _impl = impl; 196 _impl = impl;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 int get version => {{interface.version}}; 311 int get version => {{interface.version}};
355 312
356 static {{descpkg}}ServiceDescription _cachedServiceDescription; 313 static {{descpkg}}ServiceDescription _cachedServiceDescription;
357 static {{descpkg}}ServiceDescription get serviceDescription { 314 static {{descpkg}}ServiceDescription get serviceDescription {
358 if (_cachedServiceDescription == null) { 315 if (_cachedServiceDescription == null) {
359 _cachedServiceDescription = new _{{interface|name}}ServiceDescription(); 316 _cachedServiceDescription = new _{{interface|name}}ServiceDescription();
360 } 317 }
361 return _cachedServiceDescription; 318 return _cachedServiceDescription;
362 } 319 }
363 } 320 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698