OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "./math_calculator.h" | |
6 | |
7 #include "mojo/public/bindings/lib/message_builder.h" | |
8 #include "./math_calculator_internal.h" | |
9 | |
10 namespace math { | |
11 namespace { | |
12 | |
13 #pragma pack(push, 1) | |
14 #if defined(__clang__) | |
15 #pragma clang diagnostic push | |
16 #pragma clang diagnostic ignored "-Wunused-private-field" | |
17 #endif | |
18 const uint32_t kCalculator_Clear_Name = 0; | |
19 class Calculator_Clear_Params { | |
20 public: | |
21 static Calculator_Clear_Params* New(mojo::Buffer* buf) { | |
22 return new (buf->Allocate(sizeof(Calculator_Clear_Params))) | |
23 Calculator_Clear_Params(); | |
24 } | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 private: | |
31 friend class mojo::internal::ObjectTraits<Calculator_Clear_Params>; | |
32 | |
33 Calculator_Clear_Params() { | |
34 _header_.num_bytes = sizeof(*this); | |
35 _header_.num_fields = 3; | |
36 } | |
37 | |
38 mojo::internal::StructHeader _header_; | |
39 | |
40 }; | |
41 MOJO_COMPILE_ASSERT(sizeof(Calculator_Clear_Params) == 8, | |
42 bad_sizeof_Calculator_Clear_Params); | |
43 | |
44 const uint32_t kCalculator_Add_Name = 1; | |
45 class Calculator_Add_Params { | |
46 public: | |
47 static Calculator_Add_Params* New(mojo::Buffer* buf) { | |
48 return new (buf->Allocate(sizeof(Calculator_Add_Params))) | |
49 Calculator_Add_Params(); | |
50 } | |
51 | |
52 void set_value(double value) { value_ = value; } | |
53 | |
54 double value() const { return value_; } | |
55 | |
56 private: | |
57 friend class mojo::internal::ObjectTraits<Calculator_Add_Params>; | |
58 | |
59 Calculator_Add_Params() { | |
60 _header_.num_bytes = sizeof(*this); | |
61 _header_.num_fields = 3; | |
62 } | |
63 | |
64 mojo::internal::StructHeader _header_; | |
65 double value_; | |
66 }; | |
67 MOJO_COMPILE_ASSERT(sizeof(Calculator_Add_Params) == 16, | |
68 bad_sizeof_Calculator_Add_Params); | |
69 | |
70 const uint32_t kCalculator_Multiply_Name = 2; | |
71 class Calculator_Multiply_Params { | |
72 public: | |
73 static Calculator_Multiply_Params* New(mojo::Buffer* buf) { | |
74 return new (buf->Allocate(sizeof(Calculator_Multiply_Params))) | |
75 Calculator_Multiply_Params(); | |
76 } | |
77 | |
78 void set_value(double value) { value_ = value; } | |
79 | |
80 double value() const { return value_; } | |
81 | |
82 private: | |
83 friend class mojo::internal::ObjectTraits<Calculator_Multiply_Params>; | |
84 | |
85 Calculator_Multiply_Params() { | |
86 _header_.num_bytes = sizeof(*this); | |
87 _header_.num_fields = 3; | |
88 } | |
89 | |
90 mojo::internal::StructHeader _header_; | |
91 double value_; | |
92 }; | |
93 MOJO_COMPILE_ASSERT(sizeof(Calculator_Multiply_Params) == 16, | |
94 bad_sizeof_Calculator_Multiply_Params); | |
95 | |
96 const uint32_t kCalculatorUI_Output_Name = 0; | |
97 class CalculatorUI_Output_Params { | |
98 public: | |
99 static CalculatorUI_Output_Params* New(mojo::Buffer* buf) { | |
100 return new (buf->Allocate(sizeof(CalculatorUI_Output_Params))) | |
101 CalculatorUI_Output_Params(); | |
102 } | |
103 | |
104 void set_value(double value) { value_ = value; } | |
105 | |
106 double value() const { return value_; } | |
107 | |
108 private: | |
109 friend class mojo::internal::ObjectTraits<CalculatorUI_Output_Params>; | |
110 | |
111 CalculatorUI_Output_Params() { | |
112 _header_.num_bytes = sizeof(*this); | |
113 _header_.num_fields = 3; | |
114 } | |
115 | |
116 mojo::internal::StructHeader _header_; | |
117 double value_; | |
118 }; | |
119 MOJO_COMPILE_ASSERT(sizeof(CalculatorUI_Output_Params) == 16, | |
120 bad_sizeof_CalculatorUI_Output_Params); | |
121 | |
122 #if defined(__clang__) | |
123 #pragma clang diagnostic pop | |
124 #endif | |
125 #pragma pack(pop) | |
126 | |
127 } // namespace | |
128 | |
129 | |
130 | |
131 CalculatorProxy::CalculatorProxy(mojo::MessageReceiver* receiver) | |
132 : receiver_(receiver) { | |
133 } | |
134 | |
135 void CalculatorProxy::Clear() { | |
136 size_t payload_size = | |
137 mojo::internal::Align(sizeof(Calculator_Clear_Params)); | |
138 | |
139 | |
140 mojo::MessageBuilder builder(kCalculator_Clear_Name, payload_size); | |
141 | |
142 Calculator_Clear_Params* params = | |
143 Calculator_Clear_Params::New(builder.buffer()); | |
144 | |
145 | |
146 | |
147 mojo::Message message; | |
148 mojo::internal::EncodePointersAndHandles(params, &message.handles); | |
149 | |
150 message.data = builder.Finish(); | |
151 | |
152 receiver_->Accept(&message); | |
153 } | |
154 | |
155 | |
156 void CalculatorProxy::Add(double value) { | |
157 size_t payload_size = | |
158 mojo::internal::Align(sizeof(Calculator_Add_Params)); | |
159 | |
160 | |
161 mojo::MessageBuilder builder(kCalculator_Add_Name, payload_size); | |
162 | |
163 Calculator_Add_Params* params = | |
164 Calculator_Add_Params::New(builder.buffer()); | |
165 | |
166 params->set_value(value); | |
167 | |
168 mojo::Message message; | |
169 mojo::internal::EncodePointersAndHandles(params, &message.handles); | |
170 | |
171 message.data = builder.Finish(); | |
172 | |
173 receiver_->Accept(&message); | |
174 } | |
175 | |
176 | |
177 void CalculatorProxy::Multiply(double value) { | |
178 size_t payload_size = | |
179 mojo::internal::Align(sizeof(Calculator_Multiply_Params)); | |
180 | |
181 | |
182 mojo::MessageBuilder builder(kCalculator_Multiply_Name, payload_size); | |
183 | |
184 Calculator_Multiply_Params* params = | |
185 Calculator_Multiply_Params::New(builder.buffer()); | |
186 | |
187 params->set_value(value); | |
188 | |
189 mojo::Message message; | |
190 mojo::internal::EncodePointersAndHandles(params, &message.handles); | |
191 | |
192 message.data = builder.Finish(); | |
193 | |
194 receiver_->Accept(&message); | |
195 } | |
196 | |
197 | |
198 bool CalculatorStub::Accept(mojo::Message* message) { | |
199 switch (message->data->header.name) { | |
200 case kCalculator_Clear_Name: { | |
201 Calculator_Clear_Params* params = | |
202 reinterpret_cast<Calculator_Clear_Params*>( | |
203 message->data->payload); | |
204 | |
205 if (!mojo::internal::DecodePointersAndHandles(params, *message)) | |
206 return false; | |
207 Clear(); | |
208 break; | |
209 } | |
210 | |
211 case kCalculator_Add_Name: { | |
212 Calculator_Add_Params* params = | |
213 reinterpret_cast<Calculator_Add_Params*>( | |
214 message->data->payload); | |
215 | |
216 if (!mojo::internal::DecodePointersAndHandles(params, *message)) | |
217 return false; | |
218 Add(params->value()); | |
219 break; | |
220 } | |
221 | |
222 case kCalculator_Multiply_Name: { | |
223 Calculator_Multiply_Params* params = | |
224 reinterpret_cast<Calculator_Multiply_Params*>( | |
225 message->data->payload); | |
226 | |
227 if (!mojo::internal::DecodePointersAndHandles(params, *message)) | |
228 return false; | |
229 Multiply(params->value()); | |
230 break; | |
231 } | |
232 | |
233 } | |
234 return true; | |
235 } | |
236 | |
237 | |
238 CalculatorUIProxy::CalculatorUIProxy(mojo::MessageReceiver* receiver) | |
239 : receiver_(receiver) { | |
240 } | |
241 | |
242 void CalculatorUIProxy::Output(double value) { | |
243 size_t payload_size = | |
244 mojo::internal::Align(sizeof(CalculatorUI_Output_Params)); | |
245 | |
246 | |
247 mojo::MessageBuilder builder(kCalculatorUI_Output_Name, payload_size); | |
248 | |
249 CalculatorUI_Output_Params* params = | |
250 CalculatorUI_Output_Params::New(builder.buffer()); | |
251 | |
252 params->set_value(value); | |
253 | |
254 mojo::Message message; | |
255 mojo::internal::EncodePointersAndHandles(params, &message.handles); | |
256 | |
257 message.data = builder.Finish(); | |
258 | |
259 receiver_->Accept(&message); | |
260 } | |
261 | |
262 | |
263 bool CalculatorUIStub::Accept(mojo::Message* message) { | |
264 switch (message->data->header.name) { | |
265 case kCalculatorUI_Output_Name: { | |
266 CalculatorUI_Output_Params* params = | |
267 reinterpret_cast<CalculatorUI_Output_Params*>( | |
268 message->data->payload); | |
269 | |
270 if (!mojo::internal::DecodePointersAndHandles(params, *message)) | |
271 return false; | |
272 Output(params->value()); | |
273 break; | |
274 } | |
275 | |
276 } | |
277 return true; | |
278 } | |
279 | |
280 | |
281 } // namespace math | |
282 | |
283 namespace mojo { | |
284 namespace internal { | |
285 | |
286 | |
287 | |
288 template <> | |
289 class ObjectTraits<math::Calculator_Clear_Params> { | |
290 public: | |
291 static void EncodePointersAndHandles( | |
292 math::Calculator_Clear_Params* params, | |
293 std::vector<Handle>* handles) { | |
294 | |
295 | |
296 } | |
297 | |
298 static bool DecodePointersAndHandles( | |
299 math::Calculator_Clear_Params* params, | |
300 const Message& message) { | |
301 | |
302 | |
303 return true; | |
304 } | |
305 }; | |
306 | |
307 template <> | |
308 class ObjectTraits<math::Calculator_Add_Params> { | |
309 public: | |
310 static void EncodePointersAndHandles( | |
311 math::Calculator_Add_Params* params, | |
312 std::vector<Handle>* handles) { | |
313 | |
314 | |
315 } | |
316 | |
317 static bool DecodePointersAndHandles( | |
318 math::Calculator_Add_Params* params, | |
319 const Message& message) { | |
320 | |
321 | |
322 return true; | |
323 } | |
324 }; | |
325 | |
326 template <> | |
327 class ObjectTraits<math::Calculator_Multiply_Params> { | |
328 public: | |
329 static void EncodePointersAndHandles( | |
330 math::Calculator_Multiply_Params* params, | |
331 std::vector<Handle>* handles) { | |
332 | |
333 | |
334 } | |
335 | |
336 static bool DecodePointersAndHandles( | |
337 math::Calculator_Multiply_Params* params, | |
338 const Message& message) { | |
339 | |
340 | |
341 return true; | |
342 } | |
343 }; | |
344 | |
345 template <> | |
346 class ObjectTraits<math::CalculatorUI_Output_Params> { | |
347 public: | |
348 static void EncodePointersAndHandles( | |
349 math::CalculatorUI_Output_Params* params, | |
350 std::vector<Handle>* handles) { | |
351 | |
352 | |
353 } | |
354 | |
355 static bool DecodePointersAndHandles( | |
356 math::CalculatorUI_Output_Params* params, | |
357 const Message& message) { | |
358 | |
359 | |
360 return true; | |
361 } | |
362 }; | |
363 | |
364 | |
365 } // namespace internal | |
366 } // namespace mojo | |
OLD | NEW |