| OLD | NEW |
| (Empty) |
| 1 {%- for method in interface.methods %} | |
| 2 const int _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name =
{{method.ordinal}}; | |
| 3 {%- endfor %} | |
| 4 | |
| 5 {#--- Interface Enums #} | |
| 6 {%- from "enum_definition.tmpl" import enum_def -%} | |
| 7 {%- for enum in interface.enums %} | |
| 8 {{ enum_def(enum, typepkg, package) }} | |
| 9 {%- endfor %} | |
| 10 | |
| 11 class _{{interface|name}}ServiceDescription implements {{descpkg}}ServiceDescrip
tion { | |
| 12 {%- if should_gen_mojom_types and interface.service_name %} | |
| 13 void getTopLevelInterface(Function responder){ | |
| 14 var interfaceTypeKey = getRuntimeTypeInfo().services["{{interface.service_na
me}}"]; | |
| 15 var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey]; | |
| 16 responder(userDefinedType.interfaceType); | |
| 17 } | |
| 18 | |
| 19 void getTypeDefinition(String typeKey, Function responder) { | |
| 20 responder(getAllMojomTypeDefinitions()[typeKey]); | |
| 21 } | |
| 22 | |
| 23 void getAllTypeDefinitions(Function responder) { | |
| 24 responder(getAllMojomTypeDefinitions()); | |
| 25 } | |
| 26 {%- else %} | |
| 27 void getTopLevelInterface(Function responder) { | |
| 28 responder(null); | |
| 29 } | |
| 30 | |
| 31 void getTypeDefinition(String typeKey, Function responder) { | |
| 32 responder(null); | |
| 33 } | |
| 34 | |
| 35 void getAllTypeDefinitions(Function responder) { | |
| 36 responder(null); | |
| 37 } | |
| 38 {%- endif %} | |
| 39 } | |
| 40 | |
| 41 abstract class {{interface|name}} { | |
| 42 {%- if interface.service_name %} | |
| 43 static const String serviceName = "{{interface.service_name}}"; | |
| 44 {%- else %} | |
| 45 static const String serviceName = null; | |
| 46 {%- endif %} | |
| 47 | |
| 48 static {{descpkg}}ServiceDescription _cachedServiceDescription; | |
| 49 static {{descpkg}}ServiceDescription get serviceDescription { | |
| 50 if (_cachedServiceDescription == null) { | |
| 51 _cachedServiceDescription = new _{{interface|name}}ServiceDescription(); | |
| 52 } | |
| 53 return _cachedServiceDescription; | |
| 54 } | |
| 55 | |
| 56 static {{interface|name}}Proxy connectToService( | |
| 57 bindings.ServiceConnector s, String url, [String serviceName]) { | |
| 58 {{interface|name}}Proxy p = new {{interface|name}}Proxy.unbound(); | |
| 59 String name = serviceName ?? {{interface|name}}.serviceName; | |
| 60 if ((name == null) || name.isEmpty) { | |
| 61 throw new core.MojoApiError( | |
| 62 "If an interface has no ServiceName, then one must be provided."); | |
| 63 } | |
| 64 s.connectToService(url, p, name); | |
| 65 return p; | |
| 66 } | |
| 67 | |
| 68 {%- for method in interface.methods %} | |
| 69 {%- if method.response_parameters == None %} | |
| 70 void {{method|name}}( | |
| 71 {%- for parameter in method.parameters -%} | |
| 72 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {%
endif %} | |
| 73 {%- endfor -%} | |
| 74 ); | |
| 75 {%- else %} | |
| 76 void {{method|name}}( | |
| 77 {%- for parameter in method.parameters -%} | |
| 78 {{parameter.kind|dart_type}} {{parameter|name}}, | |
| 79 {%- endfor -%} | |
| 80 void callback( | |
| 81 {%- for param in method.response_parameters -%} | |
| 82 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} | |
| 83 {%- endfor -%} | |
| 84 )); | |
| 85 {%- endif %} | |
| 86 {%- endfor %} | |
| 87 | |
| 88 {#--- Interface Constants #} | |
| 89 {%- for constant in interface.constants %} | |
| 90 static const {{constant.kind|dart_type}} {{constant|name}} = {{constant.resolv
ed_value}}; | |
| 91 {%- endfor %} | |
| 92 } | |
| 93 | |
| 94 abstract class {{interface|name}}Interface | |
| 95 implements bindings.MojoInterface<{{interface|name}}>, | |
| 96 {{interface|name}} { | |
| 97 factory {{interface|name}}Interface([{{interface|name}} impl]) => | |
| 98 new {{interface|name}}Stub.unbound(impl); | |
| 99 | |
| 100 factory {{interface|name}}Interface.fromEndpoint( | |
| 101 core.MojoMessagePipeEndpoint endpoint, | |
| 102 [{{interface|name}} impl]) => | |
| 103 new {{interface|name}}Stub.fromEndpoint(endpoint, impl); | |
| 104 | |
| 105 factory {{interface|name}}Interface.fromMock( | |
| 106 {{interface|name}} mock) => | |
| 107 new {{interface|name}}Proxy.fromMock(mock); | |
| 108 } | |
| 109 | |
| 110 abstract class {{interface|name}}InterfaceRequest | |
| 111 implements bindings.MojoInterface<{{interface|name}}>, | |
| 112 {{interface|name}} { | |
| 113 factory {{interface|name}}InterfaceRequest() => | |
| 114 new {{interface|name}}Proxy.unbound(); | |
| 115 } | |
| 116 | |
| 117 class _{{interface|name}}ProxyControl | |
| 118 extends bindings.ProxyMessageHandler | |
| 119 implements bindings.ProxyControl<{{interface|name}}> { | |
| 120 {{interface|name}} impl; | |
| 121 | |
| 122 _{{interface|name}}ProxyControl.fromEndpoint( | |
| 123 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint); | |
| 124 | |
| 125 _{{interface|name}}ProxyControl.fromHandle( | |
| 126 core.MojoHandle handle) : super.fromHandle(handle); | |
| 127 | |
| 128 _{{interface|name}}ProxyControl.unbound() : super.unbound(); | |
| 129 | |
| 130 String get serviceName => {{interface|name}}.serviceName; | |
| 131 | |
| 132 void handleResponse(bindings.ServiceMessage message) { | |
| 133 switch (message.header.type) { | |
| 134 {%- for method in interface.methods %} | |
| 135 {%- if method.response_parameters != None %} | |
| 136 {%- set response_struct = method.response_param_struct %} | |
| 137 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: | |
| 138 Function callback = getCallback(message); | |
| 139 if (callback != null) { | |
| 140 var r = {{response_struct|name}}.deserialize( | |
| 141 message.payload); | |
| 142 callback( | |
| 143 {%- for param in method.response_parameters -%} | |
| 144 r.{{param|name}} {% if not loop.last %}, {% endif %} | |
| 145 {%- endfor -%} | |
| 146 ); | |
| 147 } | |
| 148 break; | |
| 149 {%- endif %} | |
| 150 {%- endfor %} | |
| 151 default: | |
| 152 proxyError("Unexpected message type: ${message.header.type}"); | |
| 153 close(immediate: true); | |
| 154 break; | |
| 155 } | |
| 156 } | |
| 157 | |
| 158 @override | |
| 159 String toString() { | |
| 160 var superString = super.toString(); | |
| 161 return "_{{interface|name}}ProxyControl($superString)"; | |
| 162 } | |
| 163 } | |
| 164 | |
| 165 class {{interface|name}}Proxy | |
| 166 extends bindings.Proxy<{{interface|name}}> | |
| 167 implements {{interface|name}}, | |
| 168 {{interface|name}}Interface, | |
| 169 {{interface|name}}InterfaceRequest { | |
| 170 {{interface|name}}Proxy.fromEndpoint( | |
| 171 core.MojoMessagePipeEndpoint endpoint) | |
| 172 : super(new _{{interface|name}}ProxyControl.fromEndpoint(endpoint)); | |
| 173 | |
| 174 {{interface|name}}Proxy.fromHandle(core.MojoHandle handle) | |
| 175 : super(new _{{interface|name}}ProxyControl.fromHandle(handle)); | |
| 176 | |
| 177 {{interface|name}}Proxy.unbound() | |
| 178 : super(new _{{interface|name}}ProxyControl.unbound()); | |
| 179 | |
| 180 factory {{interface|name}}Proxy.fromMock({{interface|name}} mock) { | |
| 181 {{interface|name}}Proxy newMockedProxy = | |
| 182 new {{interface|name}}Proxy.unbound(); | |
| 183 newMockedProxy.impl = mock; | |
| 184 return newMockedProxy; | |
| 185 } | |
| 186 | |
| 187 static {{interface|name}}Proxy newFromEndpoint( | |
| 188 core.MojoMessagePipeEndpoint endpoint) { | |
| 189 assert(endpoint.setDescription("For {{interface|name}}Proxy")); | |
| 190 return new {{interface|name}}Proxy.fromEndpoint(endpoint); | |
| 191 } | |
| 192 | |
| 193 {% for method in interface.methods %} | |
| 194 {%- if method.response_parameters == None %} | |
| 195 void {{method|name}}( | |
| 196 {%- for parameter in method.parameters -%} | |
| 197 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} | |
| 198 {%- endfor -%} | |
| 199 {%- set request_struct = method.param_struct -%} | |
| 200 ) { | |
| 201 if (impl != null) { | |
| 202 impl.{{method|name}}( | |
| 203 {%- for parameter in method.parameters -%} | |
| 204 {{parameter|name}}{% if not loop.last %}, {% endif %} | |
| 205 {%- endfor -%} | |
| 206 ); | |
| 207 return; | |
| 208 } | |
| 209 if (!ctrl.isBound) { | |
| 210 ctrl.proxyError("The Proxy is closed."); | |
| 211 return; | |
| 212 } | |
| 213 var params = new {{request_struct|name}}(); | |
| 214 {%- for parameter in method.parameters %} | |
| 215 params.{{parameter|name}} = {{parameter|name}}; | |
| 216 {%- endfor %} | |
| 217 ctrl.sendMessage(params, | |
| 218 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name); | |
| 219 } | |
| 220 {%- else %} | |
| 221 {%- set request_struct = method.param_struct %} | |
| 222 {%- set response_struct = method.response_param_struct %} | |
| 223 void {{method|name}}( | |
| 224 {%- for parameter in method.parameters -%} | |
| 225 {{parameter.kind|dart_type}} {{parameter|name}}, | |
| 226 {%- endfor -%} | |
| 227 void callback( | |
| 228 {%- for param in method.response_parameters -%} | |
| 229 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} | |
| 230 {%- endfor -%} | |
| 231 )) { | |
| 232 if (impl != null) { | |
| 233 impl.{{method|name}}( | |
| 234 {%- for parameter in method.parameters -%} | |
| 235 {{parameter|name}}, | |
| 236 {%- endfor -%} | |
| 237 callback ?? bindings.DoNothingFunction.fn); | |
| 238 return; | |
| 239 } | |
| 240 var params = new {{request_struct|name}}(); | |
| 241 {%- for parameter in method.parameters %} | |
| 242 params.{{parameter|name}} = {{parameter|name}}; | |
| 243 {%- endfor %} | |
| 244 Function zonedCallback; | |
| 245 if ((callback == null) || identical(Zone.current, Zone.ROOT)) { | |
| 246 zonedCallback = callback; | |
| 247 } else { | |
| 248 Zone z = Zone.current; | |
| 249 zonedCallback = (( | |
| 250 {%- for param in method.response_parameters -%} | |
| 251 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} | |
| 252 {%- endfor -%} | |
| 253 ) { | |
| 254 z.bindCallback(() { | |
| 255 callback( | |
| 256 {%- for param in method.response_parameters -%} | |
| 257 {{param|name}}{% if not loop.last %}, {% endif %} | |
| 258 {%- endfor -%} | |
| 259 ); | |
| 260 })(); | |
| 261 }); | |
| 262 } | |
| 263 ctrl.sendMessageWithRequestId( | |
| 264 params, | |
| 265 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, | |
| 266 -1, | |
| 267 bindings.MessageHeader.kMessageExpectsResponse, | |
| 268 zonedCallback); | |
| 269 } | |
| 270 {%- endif %} | |
| 271 {%- endfor %} | |
| 272 } | |
| 273 | |
| 274 class _{{interface|name}}StubControl | |
| 275 extends bindings.StubMessageHandler | |
| 276 implements bindings.StubControl<{{interface|name}}> { | |
| 277 {{interface|name}} _impl; | |
| 278 | |
| 279 _{{interface|name}}StubControl.fromEndpoint( | |
| 280 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) | |
| 281 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | |
| 282 _impl = impl; | |
| 283 } | |
| 284 | |
| 285 _{{interface|name}}StubControl.fromHandle( | |
| 286 core.MojoHandle handle, [{{interface|name}} impl]) | |
| 287 : super.fromHandle(handle, autoBegin: impl != null) { | |
| 288 _impl = impl; | |
| 289 } | |
| 290 | |
| 291 _{{interface|name}}StubControl.unbound([this._impl]) : super.unbound(); | |
| 292 | |
| 293 String get serviceName => {{interface|name}}.serviceName; | |
| 294 | |
| 295 {% for method in interface.methods %} | |
| 296 {%- if method.response_parameters != None %} | |
| 297 {%- set response_struct = method.response_param_struct %} | |
| 298 Function _{{response_struct|name|lower_camel}}Responder( | |
| 299 int requestId) { | |
| 300 return ( | |
| 301 {%- for param in method.response_parameters -%} | |
| 302 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} | |
| 303 {%- endfor -%} | |
| 304 ) { | |
| 305 var result = new {{response_struct|name}}(); | |
| 306 {%- for param in method.response_parameters %} | |
| 307 result.{{param|name}} = {{param|name}}; | |
| 308 {%- endfor %} | |
| 309 sendResponse(buildResponseWithId( | |
| 310 result, | |
| 311 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, | |
| 312 requestId, | |
| 313 bindings.MessageHeader.kMessageIsResponse)); | |
| 314 }; | |
| 315 } | |
| 316 {%- endif %} | |
| 317 {%- endfor %} | |
| 318 | |
| 319 void handleMessage(bindings.ServiceMessage message) { | |
| 320 if (bindings.ControlMessageHandler.isControlMessage(message)) { | |
| 321 bindings.ControlMessageHandler.handleMessage( | |
| 322 this, {{interface.version}}, message); | |
| 323 return; | |
| 324 } | |
| 325 if (_impl == null) { | |
| 326 throw new core.MojoApiError("$this has no implementation set"); | |
| 327 } | |
| 328 switch (message.header.type) { | |
| 329 {%- for method in interface.methods %} | |
| 330 {%- set request_struct = method.param_struct %} | |
| 331 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: | |
| 332 {%- if method.parameters %} | |
| 333 var params = {{request_struct|name}}.deserialize( | |
| 334 message.payload); | |
| 335 {%- endif %} | |
| 336 {%- if method.response_parameters == None %} | |
| 337 _impl.{{method|name}}( | |
| 338 {%- for parameter in method.parameters -%} | |
| 339 params.{{parameter|name}}{% if not loop.last %}, {% endif %} | |
| 340 {%- endfor -%} | |
| 341 ); | |
| 342 {%- else %} | |
| 343 {%- set response_struct = method.response_param_struct %} | |
| 344 _impl.{{method|name}}( | |
| 345 {%- for parameter in method.parameters -%} | |
| 346 params.{{parameter|name}}, {% endfor -%} | |
| 347 _{{response_struct|name|lower_camel}}Responder(message.header.requestI
d)); | |
| 348 {%- endif %} | |
| 349 break; | |
| 350 {%- endfor %} | |
| 351 default: | |
| 352 throw new bindings.MojoCodecError("Unexpected message name"); | |
| 353 break; | |
| 354 } | |
| 355 } | |
| 356 | |
| 357 {{interface|name}} get impl => _impl; | |
| 358 set impl({{interface|name}} d) { | |
| 359 if (d == null) { | |
| 360 throw new core.MojoApiError("$this: Cannot set a null implementation"); | |
| 361 } | |
| 362 if (isBound && (_impl == null)) { | |
| 363 beginHandlingEvents(); | |
| 364 } | |
| 365 _impl = d; | |
| 366 } | |
| 367 | |
| 368 @override | |
| 369 void bind(core.MojoMessagePipeEndpoint endpoint) { | |
| 370 super.bind(endpoint); | |
| 371 if (!isOpen && (_impl != null)) { | |
| 372 beginHandlingEvents(); | |
| 373 } | |
| 374 } | |
| 375 | |
| 376 @override | |
| 377 String toString() { | |
| 378 var superString = super.toString(); | |
| 379 return "_{{interface|name}}StubControl($superString)"; | |
| 380 } | |
| 381 | |
| 382 int get version => {{interface.version}}; | |
| 383 } | |
| 384 | |
| 385 class {{interface|name}}Stub | |
| 386 extends bindings.Stub<{{interface|name}}> | |
| 387 implements {{interface|name}}, | |
| 388 {{interface|name}}Interface, | |
| 389 {{interface|name}}InterfaceRequest { | |
| 390 {{interface|name}}Stub.unbound([{{interface|name}} impl]) | |
| 391 : super(new _{{interface|name}}StubControl.unbound(impl)); | |
| 392 | |
| 393 {{interface|name}}Stub.fromEndpoint( | |
| 394 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) | |
| 395 : super(new _{{interface|name}}StubControl.fromEndpoint(endpoint, impl)); | |
| 396 | |
| 397 {{interface|name}}Stub.fromHandle( | |
| 398 core.MojoHandle handle, [{{interface|name}} impl]) | |
| 399 : super(new _{{interface|name}}StubControl.fromHandle(handle, impl)); | |
| 400 | |
| 401 static {{interface|name}}Stub newFromEndpoint( | |
| 402 core.MojoMessagePipeEndpoint endpoint) { | |
| 403 assert(endpoint.setDescription("For {{interface|name}}Stub")); | |
| 404 return new {{interface|name}}Stub.fromEndpoint(endpoint); | |
| 405 } | |
| 406 | |
| 407 {% for method in interface.methods %} | |
| 408 {%- if method.response_parameters == None %} | |
| 409 void {{method|name}}( | |
| 410 {%- for parameter in method.parameters -%} | |
| 411 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} | |
| 412 {%- endfor -%} | |
| 413 ) { | |
| 414 return impl.{{method|name}}( | |
| 415 {%- for parameter in method.parameters -%} | |
| 416 {{parameter|name}}{% if not loop.last %}, {% endif %} | |
| 417 {%- endfor -%} | |
| 418 ); | |
| 419 } | |
| 420 {%- else %} | |
| 421 void {{method|name}}( | |
| 422 {%- for parameter in method.parameters -%} | |
| 423 {{parameter.kind|dart_type}} {{parameter|name}}, | |
| 424 {%- endfor -%} | |
| 425 void callback( | |
| 426 {%- for param in method.response_parameters -%} | |
| 427 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} | |
| 428 {%- endfor -%} | |
| 429 )) { | |
| 430 return impl.{{method|name}}( | |
| 431 {%- for parameter in method.parameters -%} | |
| 432 {{parameter|name}}, | |
| 433 {%- endfor -%} | |
| 434 callback); | |
| 435 } | |
| 436 {%- endif %} | |
| 437 {%- endfor %} | |
| 438 } | |
| OLD | NEW |