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

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

Issue 2100683002: Mojo C++ Bindings: Extract AssociatedGroupController from MultiplexRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: oops more gyp ugh Created 4 years, 5 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
« no previous file with comments | « mojo/public/cpp/bindings/tests/multiplex_router_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {%- import "interface_macros.tmpl" as interface_macros %} 1 {%- import "interface_macros.tmpl" as interface_macros %}
2 {%- import "struct_macros.tmpl" as struct_macros %} 2 {%- import "struct_macros.tmpl" as struct_macros %}
3 3
4 {%- set class_name = interface.name %} 4 {%- set class_name = interface.name %}
5 {%- set proxy_name = interface.name ~ "Proxy" %} 5 {%- set proxy_name = interface.name ~ "Proxy" %}
6 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %} 6 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %}
7 7
8 {%- macro alloc_params(struct, params, message, serialization_context, 8 {%- macro alloc_params(struct, params, message, serialization_context,
9 description) %} 9 description) %}
10 ({{params}})->DecodePointers(); 10 ({{params}})->DecodePointers();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 {%- endfor %} 70 {%- endfor %}
71 71
72 {#--- ForwardToCallback definition #} 72 {#--- ForwardToCallback definition #}
73 {%- for method in interface.methods -%} 73 {%- for method in interface.methods -%}
74 {%- if method.response_parameters != None %} 74 {%- if method.response_parameters != None %}
75 {%- if method.sync %} 75 {%- if method.sync %}
76 class {{class_name}}_{{method.name}}_HandleSyncResponse 76 class {{class_name}}_{{method.name}}_HandleSyncResponse
77 : public mojo::MessageReceiver { 77 : public mojo::MessageReceiver {
78 public: 78 public:
79 {{class_name}}_{{method.name}}_HandleSyncResponse( 79 {{class_name}}_{{method.name}}_HandleSyncResponse(
80 scoped_refptr<mojo::internal::MultiplexRouter> router, bool* result 80 scoped_refptr<mojo::AssociatedGroupController> group_controller,
81 bool* result
81 {%- for param in method.response_parameters -%} 82 {%- for param in method.response_parameters -%}
82 , {{param.kind|cpp_wrapper_type}}* out_{{param.name}} 83 , {{param.kind|cpp_wrapper_type}}* out_{{param.name}}
83 {%- endfor %}) 84 {%- endfor %})
84 : serialization_context_(std::move(router)), result_(result) 85 : serialization_context_(std::move(group_controller)), result_(result)
85 {%- for param in method.response_parameters -%} 86 {%- for param in method.response_parameters -%}
86 , out_{{param.name}}_(out_{{param.name}}) 87 , out_{{param.name}}_(out_{{param.name}})
87 {%- endfor %} { 88 {%- endfor %} {
88 DCHECK(!*result_); 89 DCHECK(!*result_);
89 } 90 }
90 bool Accept(mojo::Message* message) override; 91 bool Accept(mojo::Message* message) override;
91 private: 92 private:
92 mojo::internal::SerializationContext serialization_context_; 93 mojo::internal::SerializationContext serialization_context_;
93 bool* result_; 94 bool* result_;
94 {%- for param in method.response_parameters %} 95 {%- for param in method.response_parameters %}
(...skipping 17 matching lines...) Expand all
112 *result_ = true; 113 *result_ = true;
113 return true; 114 return true;
114 } 115 }
115 {%- endif %} 116 {%- endif %}
116 117
117 class {{class_name}}_{{method.name}}_ForwardToCallback 118 class {{class_name}}_{{method.name}}_ForwardToCallback
118 : public mojo::MessageReceiver { 119 : public mojo::MessageReceiver {
119 public: 120 public:
120 {{class_name}}_{{method.name}}_ForwardToCallback( 121 {{class_name}}_{{method.name}}_ForwardToCallback(
121 const {{class_name}}::{{method.name}}Callback& callback, 122 const {{class_name}}::{{method.name}}Callback& callback,
122 scoped_refptr<mojo::internal::MultiplexRouter> router) 123 scoped_refptr<mojo::AssociatedGroupController> group_controller)
123 : callback_(callback), serialization_context_(std::move(router)) { 124 : callback_(callback),
125 serialization_context_(std::move(group_controller)) {
124 } 126 }
125 bool Accept(mojo::Message* message) override; 127 bool Accept(mojo::Message* message) override;
126 private: 128 private:
127 {{class_name}}::{{method.name}}Callback callback_; 129 {{class_name}}::{{method.name}}Callback callback_;
128 mojo::internal::SerializationContext serialization_context_; 130 mojo::internal::SerializationContext serialization_context_;
129 DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ForwardToCallback); 131 DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ForwardToCallback);
130 }; 132 };
131 bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept( 133 bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
132 mojo::Message* message) { 134 mojo::Message* message) {
133 internal::{{class_name}}_{{method.name}}_ResponseParams_Data* params = 135 internal::{{class_name}}_{{method.name}}_ResponseParams_Data* params =
(...skipping 30 matching lines...) Expand all
164 166
165 mojo::internal::RequestMessageBuilder builder({{message_name}}, size, 167 mojo::internal::RequestMessageBuilder builder({{message_name}}, size,
166 mojo::internal::kMessageIsSync); 168 mojo::internal::kMessageIsSync);
167 169
168 {{build_message(params_struct, "param_%s", params_description, 170 {{build_message(params_struct, "param_%s", params_description,
169 "&serialization_context_")}} 171 "&serialization_context_")}}
170 172
171 bool result = false; 173 bool result = false;
172 mojo::MessageReceiver* responder = 174 mojo::MessageReceiver* responder =
173 new {{class_name}}_{{method.name}}_HandleSyncResponse( 175 new {{class_name}}_{{method.name}}_HandleSyncResponse(
174 serialization_context_.router, &result 176 serialization_context_.group_controller, &result
175 {%- for param in method.response_parameters -%} 177 {%- for param in method.response_parameters -%}
176 , param_{{param.name}} 178 , param_{{param.name}}
177 {%- endfor %}); 179 {%- endfor %});
178 if (!receiver_->AcceptWithResponder(builder.message(), responder)) 180 if (!receiver_->AcceptWithResponder(builder.message(), responder))
179 delete responder; 181 delete responder;
180 return result; 182 return result;
181 } 183 }
182 {%- endif %} 184 {%- endif %}
183 185
184 void {{proxy_name}}::{{method.name}}( 186 void {{proxy_name}}::{{method.name}}(
185 {{interface_macros.declare_request_params("in_", method)}}) { 187 {{interface_macros.declare_request_params("in_", method)}}) {
186 {{struct_macros.get_serialized_size(params_struct, "in_%s", 188 {{struct_macros.get_serialized_size(params_struct, "in_%s",
187 "&serialization_context_")}} 189 "&serialization_context_")}}
188 190
189 {%- if method.response_parameters != None %} 191 {%- if method.response_parameters != None %}
190 mojo::internal::RequestMessageBuilder builder({{message_name}}, size); 192 mojo::internal::RequestMessageBuilder builder({{message_name}}, size);
191 {%- else %} 193 {%- else %}
192 mojo::internal::MessageBuilder builder({{message_name}}, size); 194 mojo::internal::MessageBuilder builder({{message_name}}, size);
193 {%- endif %} 195 {%- endif %}
194 196
195 {{build_message(params_struct, "in_%s", params_description, 197 {{build_message(params_struct, "in_%s", params_description,
196 "&serialization_context_")}} 198 "&serialization_context_")}}
197 199
198 {%- if method.response_parameters != None %} 200 {%- if method.response_parameters != None %}
199 mojo::MessageReceiver* responder = 201 mojo::MessageReceiver* responder =
200 new {{class_name}}_{{method.name}}_ForwardToCallback(callback, serializati on_context_.router); 202 new {{class_name}}_{{method.name}}_ForwardToCallback(
203 callback, serialization_context_.group_controller);
201 if (!receiver_->AcceptWithResponder(builder.message(), responder)) 204 if (!receiver_->AcceptWithResponder(builder.message(), responder))
202 delete responder; 205 delete responder;
203 {%- else %} 206 {%- else %}
204 bool ok = receiver_->Accept(builder.message()); 207 bool ok = receiver_->Accept(builder.message());
205 // This return value may be ignored as !ok implies the Connector has 208 // This return value may be ignored as !ok implies the Connector has
206 // encountered an error, which will be visible through other means. 209 // encountered an error, which will be visible through other means.
207 ALLOW_UNUSED_LOCAL(ok); 210 ALLOW_UNUSED_LOCAL(ok);
208 {%- endif %} 211 {%- endif %}
209 } 212 }
210 {%- endfor %} 213 {%- endfor %}
211 214
212 {#--- ProxyToResponder definition #} 215 {#--- ProxyToResponder definition #}
213 {%- for method in interface.methods -%} 216 {%- for method in interface.methods -%}
214 {%- if method.response_parameters != None %} 217 {%- if method.response_parameters != None %}
215 {%- set message_name = 218 {%- set message_name =
216 "internal::k%s_%s_Name"|format(interface.name, method.name) %} 219 "internal::k%s_%s_Name"|format(interface.name, method.name) %}
217 {%- set response_params_struct = method.response_param_struct %} 220 {%- set response_params_struct = method.response_param_struct %}
218 {%- set params_description = 221 {%- set params_description =
219 "%s.%s response"|format(interface.name, method.name) %} 222 "%s.%s response"|format(interface.name, method.name) %}
220 class {{class_name}}_{{method.name}}_ProxyToResponder 223 class {{class_name}}_{{method.name}}_ProxyToResponder
221 : public base::RefCountedThreadSafe< 224 : public base::RefCountedThreadSafe<
222 {{class_name}}_{{method.name}}_ProxyToResponder> { 225 {{class_name}}_{{method.name}}_ProxyToResponder> {
223 public: 226 public:
224 static {{class_name}}::{{method.name}}Callback CreateCallback( 227 static {{class_name}}::{{method.name}}Callback CreateCallback(
225 uint64_t request_id, 228 uint64_t request_id,
226 bool is_sync, 229 bool is_sync,
227 mojo::MessageReceiverWithStatus* responder, 230 mojo::MessageReceiverWithStatus* responder,
228 scoped_refptr<mojo::internal::MultiplexRouter> router) { 231 scoped_refptr<mojo::AssociatedGroupController>
232 group_controller) {
229 scoped_refptr<{{class_name}}_{{method.name}}_ProxyToResponder> proxy 233 scoped_refptr<{{class_name}}_{{method.name}}_ProxyToResponder> proxy
230 = new {{class_name}}_{{method.name}}_ProxyToResponder( 234 = new {{class_name}}_{{method.name}}_ProxyToResponder(
231 request_id, is_sync, responder, router); 235 request_id, is_sync, responder, group_controller);
232 return base::Bind(&{{class_name}}_{{method.name}}_ProxyToResponder::Run, 236 return base::Bind(&{{class_name}}_{{method.name}}_ProxyToResponder::Run,
233 proxy); 237 proxy);
234 } 238 }
235 239
236 private: 240 private:
237 friend class base::RefCountedThreadSafe< 241 friend class base::RefCountedThreadSafe<
238 {{class_name}}_{{method.name}}_ProxyToResponder>; 242 {{class_name}}_{{method.name}}_ProxyToResponder>;
239 243
240 {{class_name}}_{{method.name}}_ProxyToResponder( 244 {{class_name}}_{{method.name}}_ProxyToResponder(
241 uint64_t request_id, 245 uint64_t request_id,
242 bool is_sync, 246 bool is_sync,
243 mojo::MessageReceiverWithStatus* responder, 247 mojo::MessageReceiverWithStatus* responder,
244 scoped_refptr<mojo::internal::MultiplexRouter> router) 248 scoped_refptr<mojo::AssociatedGroupController> group_controller)
245 : request_id_(request_id), 249 : request_id_(request_id),
246 is_sync_(is_sync), 250 is_sync_(is_sync),
247 responder_(responder), 251 responder_(responder),
248 serialization_context_(std::move(router)) { 252 serialization_context_(std::move(group_controller)) {
249 } 253 }
250 254
251 ~{{class_name}}_{{method.name}}_ProxyToResponder() { 255 ~{{class_name}}_{{method.name}}_ProxyToResponder() {
252 #if DCHECK_IS_ON() 256 #if DCHECK_IS_ON()
253 if (responder_) { 257 if (responder_) {
254 // Is the Mojo application destroying the callback without running it 258 // Is the Mojo application destroying the callback without running it
255 // and without first closing the pipe? 259 // and without first closing the pipe?
256 responder_->DCheckInvalid("The callback passed to " 260 responder_->DCheckInvalid("The callback passed to "
257 "{{class_name}}::{{method.name}}() was never run."); 261 "{{class_name}}::{{method.name}}() was never run.");
258 } 262 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 message->mutable_payload()); 353 message->mutable_payload());
350 354
351 {{alloc_params(method.param_struct, "params", "message", 355 {{alloc_params(method.param_struct, "params", "message",
352 "&serialization_context_", "{{class_name}}::{{method.name}}")| 356 "&serialization_context_", "{{class_name}}::{{method.name}}")|
353 indent(4)}} 357 indent(4)}}
354 {{class_name}}::{{method.name}}Callback callback = 358 {{class_name}}::{{method.name}}Callback callback =
355 {{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback( 359 {{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback(
356 message->request_id(), 360 message->request_id(),
357 message->has_flag(mojo::internal::kMessageIsSync), 361 message->has_flag(mojo::internal::kMessageIsSync),
358 responder, 362 responder,
359 serialization_context_.router); 363 serialization_context_.group_controller);
360 // A null |sink_| means no implementation was bound. 364 // A null |sink_| means no implementation was bound.
361 assert(sink_); 365 assert(sink_);
362 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}"); 366 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}");
363 sink_->{{method.name}}( 367 sink_->{{method.name}}(
364 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back); 368 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back);
365 return true; 369 return true;
366 {%- else %} 370 {%- else %}
367 break; 371 break;
368 {%- endif %} 372 {%- endif %}
369 } 373 }
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 break; 465 break;
462 } 466 }
463 467
464 // Unrecognized message. 468 // Unrecognized message.
465 ReportValidationError( 469 ReportValidationError(
466 &validation_context, 470 &validation_context,
467 mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); 471 mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD);
468 return false; 472 return false;
469 } 473 }
470 {%- endif -%} 474 {%- endif -%}
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/tests/multiplex_router_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698