OLD | NEW |
1 {%- for method in interface.methods %} | 1 {%- for method in interface.methods %} |
2 const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}}; | 2 const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}}; |
3 {%- endfor %} | 3 {%- endfor %} |
4 | 4 |
5 | 5 abstract class {{interface.name}}Calls { |
6 class {{interface.name}}Client extends bindings.Client { | 6 void enqueueMessage(Type t, int name, Object msg); |
7 {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi
nt); | 7 Future enqueueMessageWithRequestID(Type t, int name, int id, Object msg); |
| 8 bool get isOpen; |
8 | 9 |
9 {%- for method in interface.methods %} | 10 {%- for method in interface.methods %} |
10 {%- if method.response_parameters == None %} | 11 {%- if method.response_parameters == None %} |
11 void {{method.name|stylize_method}}( | 12 void call{{method.name}}( |
12 {%- for parameter in method.parameters -%} | 13 {%- for parameter in method.parameters -%} |
13 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 14 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
14 {%- endfor -%} | 15 {%- endfor -%} |
15 ) { | 16 ) { |
16 assert(isOpen); | 17 assert(isOpen); |
17 var params = new {{interface.name}}_{{method.name}}_Params(); | 18 var params = new {{interface.name}}_{{method.name}}_Params(); |
18 {%- for parameter in method.parameters %} | 19 {%- for parameter in method.parameters %} |
19 params.{{parameter.name}} = {{parameter.name}}; | 20 params.{{parameter.name}} = {{parameter.name}}; |
20 {%- endfor %} | 21 {%- endfor %} |
21 enqueueMessage({{interface.name}}_{{method.name}}_Params, | 22 enqueueMessage({{interface.name}}_{{method.name}}_Params, |
22 k{{interface.name}}_{{method.name}}_name, | 23 k{{interface.name}}_{{method.name}}_name, |
23 params); | 24 params); |
24 } | 25 } |
25 {% else %} | 26 {% else %} |
26 Future<{{interface.name}}_{{method.name}}_ResponseParams> {{method.name|styliz
e_method}}( | 27 Future<{{interface.name}}_{{method.name}}_ResponseParams> call{{method.name}}( |
27 {%- for parameter in method.parameters -%} | 28 {%- for parameter in method.parameters -%} |
28 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 29 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
29 {%- endfor -%} | 30 {%- endfor -%} |
30 ) { | 31 ) { |
31 assert(isOpen); | 32 assert(isOpen); |
32 var params = new {{interface.name}}_{{method.name}}_Params(); | 33 var params = new {{interface.name}}_{{method.name}}_Params(); |
33 {%- for parameter in method.parameters %} | 34 {%- for parameter in method.parameters %} |
34 params.{{parameter.name}} = {{parameter.name}}; | 35 params.{{parameter.name}} = {{parameter.name}}; |
35 {%- endfor %} | 36 {%- endfor %} |
36 return enqueueMessageWithRequestID( | 37 return enqueueMessageWithRequestID( |
37 {{interface.name}}_{{method.name}}_Params, | 38 {{interface.name}}_{{method.name}}_Params, |
38 k{{interface.name}}_{{method.name}}_name, | 39 k{{interface.name}}_{{method.name}}_name, |
| 40 0, |
39 bindings.kMessageExpectsResponse, | 41 bindings.kMessageExpectsResponse, |
40 params); | 42 params); |
41 } | 43 } |
42 {%- endif %} | 44 {%- endif %} |
43 {%- endfor %} | 45 {%- endfor %} |
| 46 } |
| 47 |
| 48 class {{interface.name}}Client extends bindings.Client with {{interface.name}}Ca
lls { |
| 49 {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi
nt); |
44 | 50 |
45 void handleResponse(bindings.MessageReader reader) { | 51 void handleResponse(bindings.MessageReader reader) { |
46 switch (reader.name) { | 52 switch (reader.name) { |
47 {%- for method in interface.methods %} | 53 {%- for method in interface.methods %} |
48 {%- if method.response_parameters != None %} | 54 {%- if method.response_parameters != None %} |
49 case k{{interface.name}}_{{method.name}}_name: | 55 case k{{interface.name}}_{{method.name}}_name: |
50 var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseP
arams); | 56 var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseP
arams); |
51 Completer c = completerQueue.removeAt(0); | 57 Completer c = completerQueue.removeAt(0); |
52 c.complete(r); | 58 c.complete(r); |
53 break; | 59 break; |
54 {%- endif %} | 60 {%- endif %} |
55 {%- endfor %} | 61 {%- endfor %} |
56 default: | 62 default: |
57 throw new Exception("Unexpected message name"); | 63 throw new Exception("Unexpected message name"); |
58 break; | 64 break; |
59 } | 65 } |
60 } | 66 } |
61 } | 67 } |
62 | 68 |
63 | 69 |
64 class {{interface.name}}Interface extends bindings.Interface { | 70 abstract class {{interface.name}}Interface extends bindings.Interface |
| 71 {% if interface.client != None -%} |
| 72 with {{imported_from[interface.client]}}{{interface.client}}Calls |
| 73 {% endif -%} { |
65 {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end
point); | 74 {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end
point); |
66 | 75 |
67 bindings.Message handleMessage(bindings.MessageReader reader, | 76 {% for method in interface.methods %} |
68 Function messageHandler) { | 77 {%- if method.response_parameters == None %} |
| 78 void {{method.name|stylize_method}}( |
| 79 {%- for parameter in method.parameters -%} |
| 80 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
| 81 {%- endfor -%} |
| 82 ); |
| 83 {%- else %} |
| 84 {{interface.name}}_{{method.name}}_ResponseParams {{method.name|stylize_method
}}( |
| 85 {%- for parameter in method.parameters -%} |
| 86 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
| 87 {%- endfor -%} |
| 88 ); |
| 89 {%- endif %} |
| 90 {%- endfor %} |
| 91 |
| 92 bindings.Message handleMessage(bindings.MessageReader reader) { |
69 switch (reader.name) { | 93 switch (reader.name) { |
70 {%- for method in interface.methods %} | 94 {%- for method in interface.methods %} |
71 case k{{interface.name}}_{{method.name}}_name: | 95 case k{{interface.name}}_{{method.name}}_name: |
72 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Para
ms); | 96 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Para
ms); |
73 {%- if method.response_parameters == None %} | 97 {%- if method.response_parameters == None %} |
74 messageHandler(params); | 98 {{method.name|stylize_method}}(params); |
75 {%- else %} | 99 {%- else %} |
76 var response = messageHandler(params); | 100 var response = {{method.name|stylize_method}}( |
| 101 {%- for parameter in method.parameters -%} |
| 102 params.{{parameter.name}}{% if not loop.last %}, {% endif %} |
| 103 {%- endfor -%} |
| 104 ); |
77 return buildResponseWithID( | 105 return buildResponseWithID( |
78 {{interface.name}}_{{method.name}}_ResponseParams, | 106 {{interface.name}}_{{method.name}}_ResponseParams, |
79 k{{interface.name}}_{{method.name}}_name, | 107 k{{interface.name}}_{{method.name}}_name, |
| 108 reader.requestID, |
80 bindings.kMessageIsResponse, | 109 bindings.kMessageIsResponse, |
81 response); | 110 response); |
82 {%- endif %} | 111 {%- endif %} |
83 break; | 112 break; |
84 {%- endfor %} | 113 {%- endfor %} |
85 default: | 114 default: |
86 throw new Exception("Unexpected message name"); | 115 throw new Exception("Unexpected message name"); |
87 break; | 116 break; |
88 } | 117 } |
89 return null; | 118 return null; |
90 } | 119 } |
91 } | 120 } |
92 | 121 |
93 | 122 |
94 {#--- TODO(zra): Validation #} | 123 {#--- TODO(zra): Validation #} |
95 | 124 |
96 | 125 |
97 {#--- Interface Constants #} | 126 {#--- Interface Constants #} |
98 {% for constant in interface.constants %} | 127 {% for constant in interface.constants %} |
99 final {{constant.name}} = {{constant.value|expression_to_text}}; | 128 final {{constant.name}} = {{constant.value|expression_to_text}}; |
100 {%- endfor %} | 129 {%- endfor %} |
101 | 130 |
102 | 131 |
103 {#--- Interface Enums #} | 132 {#--- Interface Enums #} |
104 {%- from "enum_definition.tmpl" import enum_def -%} | 133 {%- from "enum_definition.tmpl" import enum_def -%} |
105 {%- for enum in interface.enums %} | 134 {%- for enum in interface.enums %} |
106 {{ enum_def("", enum) }} | 135 {{ enum_def("", enum) }} |
107 {%- endfor %} | 136 {%- endfor %} |
OLD | NEW |