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

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/module-sync.cc.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 {%- import "interface_macros.tmpl" as interface_macros -%}
2 {%- import "struct_macros.tmpl" as struct_macros -%}
3
4 // NOTE: This file was generated by the Mojo bindings generator.
5 #if defined(__clang__)
6 #pragma clang diagnostic push
7 #pragma clang diagnostic ignored "-Wunused-private-field"
8 #endif
9
10 #include "{{module.path}}-sync.h"
11
12 #include <math.h>
13 #include <ostream>
14 #include <string>
15 #include <utility>
16
17 #include "mojo/public/cpp/bindings/lib/array_serialization.h"
18 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h"
19 #include "mojo/public/cpp/bindings/lib/bounds_checker.h"
20 #include "mojo/public/cpp/bindings/lib/map_data_internal.h"
21 #include "mojo/public/cpp/bindings/lib/map_serialization.h"
22 #include "mojo/public/cpp/bindings/lib/message_builder.h"
23 #include "mojo/public/cpp/bindings/lib/message_validation.h"
24 #include "mojo/public/cpp/bindings/lib/string_serialization.h"
25 #include "mojo/public/cpp/bindings/lib/synchronous_connector.h"
26 #include "mojo/public/cpp/bindings/lib/validate_params.h"
27 #include "mojo/public/cpp/bindings/lib/validation_errors.h"
28 #include "mojo/public/cpp/bindings/lib/validation_util.h"
29 #include "mojo/public/cpp/bindings/message.h"
30 #include "mojo/public/cpp/bindings/message_validator.h"
31 #include "mojo/public/cpp/environment/logging.h"
32 #include "mojo/public/interfaces/bindings/interface_control_messages.mojom.h"
33 #include "{{module.path}}-internal.h"
34 #include "{{module.path}}-common.h"
35
36 {%- for namespace in namespaces_as_array %}
37 namespace {{namespace}} {
38 {%- endfor %}
39
40 // --- Interface definitions ---
41 {% for interface in interfaces %}
42 {%- set base_name = "internal::%s_Base"|format(interface.name) -%}
43 {{interface.name}}_SynchronousProxy::{{interface.name}}_SynchronousProxy(
44 mojo::internal::SynchronousConnector* connector,
45 mojo::internal::MessageValidatorList&& validators)
46 : connector_(connector), validators_(std::move(validators)) {
47 }
48
49 {% for method in interface.methods %}
50 {%- set message_name =
51 "%s::MessageOrdinals::%s"|format(base_name, method.name) %}
52 {%- set params_struct = method.param_struct %}
53 {%- set params_description =
54 "%s.%s request"|format(interface.name, method.name) %}
55 bool {{interface.name}}_SynchronousProxy::{{method.name}}(
56 {{- interface_macros.declare_sync_request_params(method)}})
57 {%- if method.response_parameters == None %} const {% endif %} {
58 {{struct_macros.get_serialized_size(params_struct, "in_%s")}}
59
60 auto msg_name = static_cast<uint32_t>({{message_name}});
61 {%- if method.response_parameters != None %}
62 mojo::RequestMessageBuilder builder(msg_name, size);
63 {%- else %}
64 mojo::MessageBuilder builder(msg_name, size);
65 {%- endif %}
66
67 {{struct_macros.serialize(params_struct,
68 "{{interface.name}}::{{method.name}}", "in_%s",
69 "out_params", "builder.buffer()", false)}}
70 out_params->EncodePointersAndHandles(builder.message()->mutable_handles());
71
72 if (!connector_->Write(builder.message()))
73 return false;
74
75 {%- if method.response_parameters != None %}
76 mojo::Message response_msg;
77 if (!connector_->BlockingRead(&response_msg))
78 return false;
79
80 // Validate the incoming message.
81 std::string response_err;
82 if (mojo::internal::RunValidatorsOnMessage(validators_, &response_msg,
83 &response_err)
84 != mojo::internal::ValidationError::NONE) {
85 MOJO_LOG(WARNING) << response_err;
86 return false;
87 }
88
89 {#- TODO(vardhan): Add support for synchronous control messages. #}
90 if (mojo::internal::ControlMessageHandler::IsControlMessage(&response_msg)) {
91 MOJO_LOG(ERROR) << "Synchronous interface bindings currently don't support "
92 "interface control messages.";
93 return false;
94 }
95 if (response_msg.name() != msg_name) {
96 MOJO_LOG(ERROR) << "Expecting response for message = " << msg_name <<
97 ", but received message = " << response_msg.name();
98 return false;
99 }
100
101 internal::{{interface.name}}_{{method.name}}_ResponseParams_Data*
102 response_params = reinterpret_cast<internal::{{interface.name}}_{{method.n ame}}_ResponseParams_Data*>(
103 response_msg.mutable_payload());
104 response_params->DecodePointersAndHandles(response_msg.mutable_handles());
105
106 {{struct_macros.deserialize(method.response_param_struct, "response_params",
107 "(*out_%s)")}}
108 {%- endif %}
109 return true;
110 }
111 {%- endfor %}
112 {%- endfor %}
113
114 {%- for namespace in namespaces_as_array|reverse %}
115 } // namespace {{namespace}}
116 {%- endfor %}
117
118 #if defined(__clang__)
119 #pragma clang diagnostic pop
120 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698