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

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

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 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
(Empty)
1 {% from "constant_definition.tmpl" import constant_def %}
2 {% from "enum_definition.tmpl" import enum_def %}
3 {% from "data_types_definition.tmpl" import struct_def %}
4
5 {%- macro declare_params(parameters, boxed=false) %}
6 {%- for param in parameters -%}
7 {{param.kind|java_type(boxed)}} {{param|name}}
8 {%- if not loop.last %}, {% endif %}
9 {%- endfor %}
10 {%- endmacro %}
11
12 {% macro declare_request_params(method) %}
13 {{declare_params(method.parameters)}}
14 {%- if method.response_parameters != None -%}
15 {%- if method.parameters %}, {% endif %}
16 {{method|interface_response_name}} callback
17 {%- endif -%}
18 {% endmacro %}
19
20 {%- macro declare_callback(method) -%}
21
22 interface {{method|interface_response_name}} extends org.chromium.mojo.bindings. Callbacks.Callback{{method.response_parameters|length}}{% if method.response_par ameters %}<
23 {%- for param in method.response_parameters -%}
24 {{param.kind|java_type(True)}}
25 {%- if not loop.last %}, {% endif %}
26 {%- endfor -%}
27 >{% endif %} { }
28 {%- endmacro -%}
29
30 {%- macro run_callback(variable, parameters) -%}
31 {%- if parameters -%}
32 {%- for param in parameters -%}
33 {{variable}}.{{param|name}}
34 {%- if not loop.last %}, {% endif %}
35 {%- endfor -%}
36 {%- endif -%}
37 {%- endmacro -%}
38
39 {%- macro flags_for_method(method, is_request) -%}
40 {{flags(method.response_parameters != None, is_request)}}
41 {%- endmacro -%}
42
43 {%- macro flags(use_response_flag, is_request) -%}
44 {%- if not use_response_flag -%}
45 org.chromium.mojo.bindings.MessageHeader.NO_FLAG
46 {%- elif is_request: -%}
47 org.chromium.mojo.bindings.MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG
48 {%- else -%}
49 org.chromium.mojo.bindings.MessageHeader.MESSAGE_IS_RESPONSE_FLAG
50 {%- endif -%}
51 {%- endmacro -%}
52
53 {%- macro manager_class(interface, fully_qualified=False) -%}
54 {% if fully_qualified %}org.chromium.mojo.bindings.Interface.{% endif %}{% if in terface.service_name %}Named{% endif %}Manager<{{interface|name}}, {{interface|n ame}}.Proxy>
55 {%- endmacro -%}
56
57 {%- macro manager_def(interface) -%}
58 public static final {{manager_class(interface, True)}} MANAGER =
59 new {{manager_class(interface, True)}}() {
60 {% if interface.service_name %}
61
62 public String getName() {
63 return "{{interface.service_name}}";
64 }
65 {% endif %}
66
67 public int getVersion() {
68 return {{interface.version}};
69 }
70
71 public Proxy buildProxy(org.chromium.mojo.system.Core core,
72 org.chromium.mojo.bindings.MessageReceiverWithRespon der messageReceiver) {
73 return new Proxy(core, messageReceiver);
74 }
75
76 public Stub buildStub(org.chromium.mojo.system.Core core, {{interface|name}} impl) {
77 return new Stub(core, impl);
78 }
79
80 public {{interface|name}}[] buildArray(int size) {
81 return new {{interface|name}}[size];
82 }
83 };
84 {%- endmacro -%}
85
86 {%- macro accept_body(interface, with_response) -%}
87 try {
88 org.chromium.mojo.bindings.ServiceMessage messageWithHeader =
89 message.asServiceMessage();
90 org.chromium.mojo.bindings.MessageHeader header = messageWithHeader.getHeade r();
91 if (!header.validateHeader({{flags(with_response, True)}})) {
92 return false;
93 }
94 switch(header.getType()) {
95 {% if with_response %}
96 case org.chromium.mojo.bindings.InterfaceControlMessagesConstants.RUN_ME SSAGE_ID:
97 return org.chromium.mojo.bindings.InterfaceControlMessagesHelper.han dleRun(
98 getCore(), {{interface|name}}_Internal.MANAGER, messageWithH eader, receiver);
99 {% else %}
100 case org.chromium.mojo.bindings.InterfaceControlMessagesConstants.RUN_OR _CLOSE_PIPE_MESSAGE_ID:
101 return org.chromium.mojo.bindings.InterfaceControlMessagesHelper.han dleRunOrClosePipe(
102 {{interface|name}}_Internal.MANAGER, messageWithHeader);
103 {% endif %}
104 {% for method in interface.methods %}
105 {% if (with_response and method.response_parameters != None) or
106 (not with_response and method.response_parameters == None) %}
107 {% set request_struct = method.param_struct %}
108 {% if with_response %}
109 {% set response_struct = method.response_param_struct %}
110 {% endif %}
111 case {{method|method_ordinal_name}}: {
112 {% if method.parameters %}
113 {{request_struct|name}} data =
114 {{request_struct|name}}.deserialize(messageWithHeader.getPay load());
115 {% else %}
116 {{request_struct|name}}.deserialize(messageWithHeader.getPayload());
117 {% endif %}
118 getImpl().{{method|name}}({{run_callback('data', method.parameters)} }{% if with_response %}{% if method.parameters %}, {% endif %}new {{response_str uct|name}}ProxyToResponder(getCore(), receiver, header.getRequestId()){% endif % });
119 return true;
120 }
121 {% endif %}
122 {% endfor %}
123 default:
124 return false;
125 }
126 } catch (org.chromium.mojo.bindings.DeserializationException e) {
127 System.err.println(e.toString());
128 return false;
129 }
130 {%- endmacro -%}
131
132 {% macro interface_def(interface) %}
133 public interface {{interface|name}} extends org.chromium.mojo.bindings.Interface {
134 {% for constant in interface.constants %}
135
136 {{constant_def(constant)|indent(4)}}
137 {% endfor %}
138 {% for enum in interface.enums %}
139
140 {{enum_def(enum, false)|indent(4)}}
141 {% endfor %}
142
143 public interface Proxy extends {{interface|name}}, org.chromium.mojo.binding s.Interface.Proxy {
144 }
145
146 {{manager_class(interface)}} MANAGER = {{interface|name}}_Internal.MANAGER;
147 {% for method in interface.methods %}
148
149 void {{method|name}}({{declare_request_params(method)}});
150 {% if method.response_parameters != None %}
151 {{declare_callback(method)|indent(4)}}
152 {% endif %}
153 {% endfor %}
154 }
155 {% endmacro %}
156
157 {% macro interface_internal_def(interface) %}
158 class {{interface|name}}_Internal {
159
160 {{manager_def(interface)|indent(4)}}
161
162 {% for method in interface.methods %}
163 private static final int {{method|method_ordinal_name}} = {{method.ordinal}} ;
164 {% endfor %}
165
166 static final class Proxy extends org.chromium.mojo.bindings.Interface.Abstra ctProxy implements {{interface|name}}.Proxy {
167
168 Proxy(org.chromium.mojo.system.Core core,
169 org.chromium.mojo.bindings.MessageReceiverWithResponder messageRec eiver) {
170 super(core, messageReceiver);
171 }
172 {% for method in interface.methods %}
173
174 @Override
175 public void {{method|name}}({{declare_request_params(method)}}) {
176 {% set request_struct = method.param_struct %}
177 {{request_struct|name}} _message = new {{request_struct|name}}();
178 {% for param in method.parameters %}
179 _message.{{param|name}} = {{param|name}};
180 {% endfor %}
181 {% if method.response_parameters != None %}
182 getProxyHandler().getMessageReceiver().acceptWithResponder(
183 _message.serializeWithHeader(
184 getProxyHandler().getCore(),
185 new org.chromium.mojo.bindings.MessageHeader(
186 {{method|method_ordinal_name}},
187 {{flags_for_method(method, True)}},
188 0)),
189 new {{method.response_param_struct|name}}ForwardToCallback(c allback));
190 {% else %}
191 getProxyHandler().getMessageReceiver().accept(
192 _message.serializeWithHeader(
193 getProxyHandler().getCore(),
194 new org.chromium.mojo.bindings.MessageHeader({{metho d|method_ordinal_name}})));
195 {% endif %}
196 }
197 {% endfor %}
198
199 }
200
201 static final class Stub extends org.chromium.mojo.bindings.Interface.Stub<{{ interface|name}}> {
202
203 Stub(org.chromium.mojo.system.Core core, {{interface|name}} impl) {
204 super(core, impl);
205 }
206
207 @Override
208 public boolean accept(org.chromium.mojo.bindings.Message message) {
209 {{accept_body(interface, False)|indent(12)}}
210 }
211
212 @Override
213 public boolean acceptWithResponder(org.chromium.mojo.bindings.Message me ssage, org.chromium.mojo.bindings.MessageReceiver receiver) {
214 {{accept_body(interface, True)|indent(12)}}
215 }
216 }
217 {% for method in interface.methods %}
218
219 {{ struct_def(method.param_struct, True)|indent(4) }}
220 {% if method.response_parameters != None %}
221 {% set response_struct = method.response_param_struct %}
222
223 {{ struct_def(response_struct, True)|indent(4) }}
224
225 static class {{response_struct|name}}ForwardToCallback extends org.chromium. mojo.bindings.SideEffectFreeCloseable
226 implements org.chromium.mojo.bindings.MessageReceiver {
227 private final {{interface|name}}.{{method|interface_response_name}} mCal lback;
228
229 {{response_struct|name}}ForwardToCallback({{interface|name}}.{{method|in terface_response_name}} callback) {
230 this.mCallback = callback;
231 }
232
233 @Override
234 public boolean accept(org.chromium.mojo.bindings.Message message) {
235 try {
236 org.chromium.mojo.bindings.ServiceMessage messageWithHeader =
237 message.asServiceMessage();
238 org.chromium.mojo.bindings.MessageHeader header = messageWithHea der.getHeader();
239 if (!header.validateHeader({{method|method_ordinal_name}},
240 {{flags_for_method(method, False)}})) {
241 return false;
242 }
243 {% if method.response_parameters|length %}
244 {{response_struct|name}} response = {{response_struct|name}}.des erialize(messageWithHeader.getPayload());
245 {% endif %}
246 mCallback.call({{run_callback('response', method.response_parame ters)}});
247 return true;
248 } catch (org.chromium.mojo.bindings.DeserializationException e) {
249 return false;
250 }
251 }
252 }
253
254 static class {{response_struct|name}}ProxyToResponder implements {{interface |name}}.{{method|interface_response_name}} {
255
256 private final org.chromium.mojo.system.Core mCore;
257 private final org.chromium.mojo.bindings.MessageReceiver mMessageReceive r;
258 private final long mRequestId;
259
260 {{response_struct|name}}ProxyToResponder(
261 org.chromium.mojo.system.Core core,
262 org.chromium.mojo.bindings.MessageReceiver messageReceiver,
263 long requestId) {
264 mCore = core;
265 mMessageReceiver = messageReceiver;
266 mRequestId = requestId;
267 }
268
269 @Override
270 public void call({{declare_params(method.response_parameters, true)}}) {
271 {{response_struct|name}} _response = new {{response_struct|name}}();
272 {% for param in method.response_parameters %}
273 _response.{{param|name}} = {{param|name}};
274 {% endfor %}
275 org.chromium.mojo.bindings.ServiceMessage _message =
276 _response.serializeWithHeader(
277 mCore,
278 new org.chromium.mojo.bindings.MessageHeader(
279 {{method|method_ordinal_name}},
280 {{flags_for_method(method, False)}},
281 mRequestId));
282 mMessageReceiver.accept(_message);
283 }
284 }
285 {% endif %}
286 {% endfor %}
287
288 }
289 {% endmacro %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698