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 abstract class {{interface.name}}Calls { | 5 abstract class {{interface|name}}Calls { |
6 void enqueueMessage(Type t, int name, Object msg); | 6 void enqueueMessage(bindings.Struct message, int name); |
7 Future enqueueMessageWithRequestID(Type t, int name, int id, Object msg); | 7 Future enqueueMessageWithRequestId(bindings.Struct message, int name, int id); |
8 bool get isOpen; | 8 bool get isOpen; |
9 | 9 |
10 {%- for method in interface.methods %} | 10 {%- for method in interface.methods %} |
11 {%- if method.response_parameters == None %} | 11 {%- if method.response_parameters == None %} |
12 void call{{method.name}}( | 12 void call{{method|name|upper_camel_case}}( |
13 {%- for parameter in method.parameters -%} | 13 {%- for parameter in method.parameters -%} |
14 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 14 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} |
15 {%- endfor -%} | 15 {%- endfor -%} |
| 16 {%- set request_struct = method|struct_from_method %} |
16 ) { | 17 ) { |
17 assert(isOpen); | 18 assert(isOpen); |
18 var params = new {{interface.name}}_{{method.name}}_Params(); | 19 var params = new {{request_struct|name}}(); |
19 {%- for parameter in method.parameters %} | 20 {%- for parameter in method.parameters %} |
20 params.{{parameter.name}} = {{parameter.name}}; | 21 params.{{parameter|name}} = {{parameter|name}}; |
21 {%- endfor %} | 22 {%- endfor %} |
22 enqueueMessage({{interface.name}}_{{method.name}}_Params, | 23 enqueueMessage(params, k{{interface|name}}_{{method|name}}_name); |
23 k{{interface.name}}_{{method.name}}_name, | |
24 params); | |
25 } | 24 } |
26 {% else %} | 25 {% else %} |
27 Future<{{interface.name}}_{{method.name}}_ResponseParams> call{{method.name}}( | 26 {%- set response_struct = method|response_struct_from_method %} |
| 27 Future<{{response_struct|name}}> call{{method|name|upper_camel_case}}( |
28 {%- for parameter in method.parameters -%} | 28 {%- for parameter in method.parameters -%} |
29 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 29 {{parameter.kind|dart_type}} {{parameter|name}}, |
30 {%- endfor -%} | 30 {%- endfor -%} |
| 31 {%- set request_struct = method|struct_from_method %} |
| 32 [int requestId = -1] |
31 ) { | 33 ) { |
32 assert(isOpen); | 34 assert(isOpen); |
33 var params = new {{interface.name}}_{{method.name}}_Params(); | 35 var params = new {{request_struct|name}}(); |
34 {%- for parameter in method.parameters %} | 36 {%- for parameter in method.parameters %} |
35 params.{{parameter.name}} = {{parameter.name}}; | 37 params.{{parameter|name}} = {{parameter|name}}; |
36 {%- endfor %} | 38 {%- endfor %} |
37 return enqueueMessageWithRequestID( | 39 return enqueueMessageWithRequestId( |
38 {{interface.name}}_{{method.name}}_Params, | 40 params, |
39 k{{interface.name}}_{{method.name}}_name, | 41 k{{interface|name}}_{{method|name}}_name, |
40 0, | 42 requestId, |
41 bindings.kMessageExpectsResponse, | 43 bindings.MessageHeader.kMessageExpectsResponse); |
42 params); | |
43 } | 44 } |
44 {%- endif %} | 45 {%- endif %} |
45 {%- endfor %} | 46 {%- endfor %} |
46 } | 47 } |
47 | 48 |
48 class {{interface.name}}Client extends bindings.Client with {{interface.name}}Ca
lls { | 49 class {{interface|name}}Client extends bindings.Client with {{interface|name}}Ca
lls { |
49 {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi
nt); | 50 {{interface|name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi
nt); |
50 | 51 |
51 void handleResponse(bindings.MessageReader reader) { | 52 {{interface|name}}Client.fromHandle(int handle) : super.fromHandle(handle); |
52 switch (reader.name) { | 53 |
| 54 void handleResponse(bindings.ServiceMessage message) { |
| 55 switch (message.header.type) { |
53 {%- for method in interface.methods %} | 56 {%- for method in interface.methods %} |
54 {%- if method.response_parameters != None %} | 57 {%- if method.response_parameters != None %} |
55 case k{{interface.name}}_{{method.name}}_name: | 58 {%- set response_struct = method|response_struct_from_method %} |
56 var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseP
arams); | 59 case k{{interface|name}}_{{method|name}}_name: |
57 Completer c = completerQueue.removeAt(0); | 60 var r = {{response_struct|name}}.deserialize( |
| 61 message.payload); |
| 62 if (!message.header.hasRequestId) { |
| 63 throw 'Expected a message with a valid request Id.'; |
| 64 } |
| 65 Completer c = completerMap[message.header.requestId]; |
| 66 completerMap[message.header.requestId] = null; |
58 c.complete(r); | 67 c.complete(r); |
59 break; | 68 break; |
60 {%- endif %} | 69 {%- endif %} |
61 {%- endfor %} | 70 {%- endfor %} |
62 default: | 71 default: |
63 throw new Exception("Unexpected message name"); | 72 throw new Exception("Unexpected message name"); |
64 break; | 73 break; |
65 } | 74 } |
66 } | 75 } |
67 } | 76 } |
68 | 77 |
69 | 78 |
70 abstract class {{interface.name}}Interface extends bindings.Interface | 79 abstract class {{interface|name}}Interface extends bindings.Interface |
71 {% if interface.client != None -%} | 80 {% if interface.client != None -%} |
72 with {{imported_from[interface.client]}}{{interface.client}}Calls | 81 with {{imported_from[interface.client]}}{{interface.client|upper_camel_case}}Cal
ls |
73 {% endif -%} { | 82 {% endif -%} { |
74 {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end
point); | 83 {{interface|name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end
point); |
| 84 |
| 85 {{interface|name}}Interface.fromHandle(int handle) : super.fromHandle(handle); |
| 86 |
| 87 static const String name = '{{namespace|replace(".","::")}}::{{interface|name}
}'; |
75 | 88 |
76 {% for method in interface.methods %} | 89 {% for method in interface.methods %} |
77 {%- if method.response_parameters == None %} | 90 {%- if method.response_parameters == None %} |
78 void {{method.name|stylize_method}}( | 91 void {{method|name}}( |
79 {%- for parameter in method.parameters -%} | 92 {%- for parameter in method.parameters -%} |
80 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 93 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} |
81 {%- endfor -%} | 94 {%- endfor -%} |
82 ); | 95 ); |
83 {%- else %} | 96 {%- else %} |
84 {{interface.name}}_{{method.name}}_ResponseParams {{method.name|stylize_method
}}( | 97 {%- set response_struct = method|response_struct_from_method %} |
| 98 Future<{{response_struct|name}}> {{method|name}}( |
85 {%- for parameter in method.parameters -%} | 99 {%- for parameter in method.parameters -%} |
86 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 100 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} |
87 {%- endfor -%} | 101 {%- endfor -%} |
88 ); | 102 ); |
89 {%- endif %} | 103 {%- endif %} |
90 {%- endfor %} | 104 {%- endfor %} |
91 | 105 |
92 bindings.Message handleMessage(bindings.MessageReader reader) { | 106 Future<bindings.Message> handleMessage(bindings.ServiceMessage message) { |
93 switch (reader.name) { | 107 switch (message.header.type) { |
94 {%- for method in interface.methods %} | 108 {%- for method in interface.methods %} |
95 case k{{interface.name}}_{{method.name}}_name: | 109 {%- set request_struct = method|struct_from_method %} |
96 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Para
ms); | 110 case k{{interface|name}}_{{method|name}}_name: |
| 111 var params = {{request_struct|name}}.deserialize( |
| 112 message.payload); |
97 {%- if method.response_parameters == None %} | 113 {%- if method.response_parameters == None %} |
98 {{method.name|stylize_method}}(params); | 114 {{method|name}}( |
99 {%- else %} | |
100 var response = {{method.name|stylize_method}}( | |
101 {%- for parameter in method.parameters -%} | 115 {%- for parameter in method.parameters -%} |
102 params.{{parameter.name}}{% if not loop.last %}, {% endif %} | 116 params.{{parameter|name}}{% if not loop.last %}, {% endif %} |
103 {%- endfor -%} | 117 {%- endfor -%} |
104 ); | 118 ); |
105 return buildResponseWithID( | 119 {%- else %} |
106 {{interface.name}}_{{method.name}}_ResponseParams, | 120 return {{method|name}}( |
107 k{{interface.name}}_{{method.name}}_name, | 121 {%- for parameter in method.parameters -%} |
108 reader.requestID, | 122 params.{{parameter|name}}{% if not loop.last %}, {% endif %} |
109 bindings.kMessageIsResponse, | 123 {%- endfor -%} |
110 response); | 124 ).then((response) { |
| 125 if (response != null) { |
| 126 return buildResponseWithId( |
| 127 response, |
| 128 k{{interface|name}}_{{method|name}}_name, |
| 129 message.header.requestId, |
| 130 bindings.MessageHeader.kMessageIsResponse); |
| 131 } |
| 132 }); |
111 {%- endif %} | 133 {%- endif %} |
112 break; | 134 break; |
113 {%- endfor %} | 135 {%- endfor %} |
114 default: | 136 default: |
115 throw new Exception("Unexpected message name"); | 137 throw new Exception("Unexpected message name"); |
116 break; | 138 break; |
117 } | 139 } |
118 return null; | 140 return null; |
119 } | 141 } |
120 } | 142 } |
121 | 143 |
122 | 144 |
123 {#--- TODO(zra): Validation #} | 145 {#--- TODO(zra): Validation #} |
124 | 146 |
125 | 147 |
126 {#--- Interface Constants #} | 148 {#--- Interface Constants #} |
127 {% for constant in interface.constants %} | 149 {% for constant in interface.constants %} |
128 final {{constant.name}} = {{constant.value|expression_to_text}}; | 150 final {{constant|name}} = {{constant.value|expression_to_text}}; |
129 {%- endfor %} | 151 {%- endfor %} |
130 | 152 |
131 | 153 |
132 {#--- Interface Enums #} | 154 {#--- Interface Enums #} |
133 {%- from "enum_definition.tmpl" import enum_def -%} | 155 {%- from "enum_definition.tmpl" import enum_def -%} |
134 {%- for enum in interface.enums %} | 156 {%- for enum in interface.enums %} |
135 {{ enum_def("", enum) }} | 157 {{ enum_def("", enum) }} |
136 {%- endfor %} | 158 {%- endfor %} |
OLD | NEW |