| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 -%} |
| OLD | NEW |