| 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 |