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

Side by Side Diff: mojo/public/cpp/bindings/lib/control_message_proxy.cc

Issue 2112093002: Mojo C++ bindings: Merge EncodePointers/DecodePointers into Serialize/Deserialize, respectively. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@61_array_fix
Patch Set: . 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/public/cpp/bindings/lib/control_message_proxy.h" 5 #include "mojo/public/cpp/bindings/lib/control_message_proxy.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 19 matching lines...) Expand all
30 30
31 private: 31 private:
32 RunCallback callback_; 32 RunCallback callback_;
33 DISALLOW_COPY_AND_ASSIGN(RunResponseForwardToCallback); 33 DISALLOW_COPY_AND_ASSIGN(RunResponseForwardToCallback);
34 }; 34 };
35 35
36 bool RunResponseForwardToCallback::Accept(Message* message) { 36 bool RunResponseForwardToCallback::Accept(Message* message) {
37 RunResponseMessageParams_Data* params = 37 RunResponseMessageParams_Data* params =
38 reinterpret_cast<RunResponseMessageParams_Data*>( 38 reinterpret_cast<RunResponseMessageParams_Data*>(
39 message->mutable_payload()); 39 message->mutable_payload());
40 params->DecodePointers();
41
42 RunResponseMessageParamsPtr params_ptr; 40 RunResponseMessageParamsPtr params_ptr;
43 SerializationContext context; 41 SerializationContext context;
44 Deserialize<RunResponseMessageParamsPtr>(params, &params_ptr, &context); 42 Deserialize<RunResponseMessageParamsPtr>(params, &params_ptr, &context);
45 43
46 callback_.Run(std::move(params_ptr->query_version_result)); 44 callback_.Run(std::move(params_ptr->query_version_result));
47 return true; 45 return true;
48 } 46 }
49 47
50 void SendRunMessage(MessageReceiverWithResponder* receiver, 48 void SendRunMessage(MessageReceiverWithResponder* receiver,
51 QueryVersionPtr query_version, 49 QueryVersionPtr query_version,
52 const RunCallback& callback, 50 const RunCallback& callback,
53 SerializationContext* context) { 51 SerializationContext* context) {
54 RunMessageParamsPtr params_ptr(RunMessageParams::New()); 52 RunMessageParamsPtr params_ptr(RunMessageParams::New());
55 params_ptr->reserved0 = 16u; 53 params_ptr->reserved0 = 16u;
56 params_ptr->reserved1 = 0u; 54 params_ptr->reserved1 = 0u;
57 params_ptr->query_version = std::move(query_version); 55 params_ptr->query_version = std::move(query_version);
58 56
59 size_t size = PrepareToSerialize<RunMessageParamsPtr>(params_ptr, context); 57 size_t size = PrepareToSerialize<RunMessageParamsPtr>(params_ptr, context);
60 RequestMessageBuilder builder(kRunMessageId, size); 58 RequestMessageBuilder builder(kRunMessageId, size);
61 59
62 RunMessageParams_Data* params = nullptr; 60 RunMessageParams_Data* params = nullptr;
63 Serialize<RunMessageParamsPtr>(params_ptr, builder.buffer(), &params, 61 Serialize<RunMessageParamsPtr>(params_ptr, builder.buffer(), &params,
64 context); 62 context);
65 params->EncodePointers();
66 MessageReceiver* responder = new RunResponseForwardToCallback(callback); 63 MessageReceiver* responder = new RunResponseForwardToCallback(callback);
67 if (!receiver->AcceptWithResponder(builder.message(), responder)) 64 if (!receiver->AcceptWithResponder(builder.message(), responder))
68 delete responder; 65 delete responder;
69 } 66 }
70 67
71 void SendRunOrClosePipeMessage(MessageReceiverWithResponder* receiver, 68 void SendRunOrClosePipeMessage(MessageReceiverWithResponder* receiver,
72 RequireVersionPtr require_version, 69 RequireVersionPtr require_version,
73 SerializationContext* context) { 70 SerializationContext* context) {
74 RunOrClosePipeMessageParamsPtr params_ptr(RunOrClosePipeMessageParams::New()); 71 RunOrClosePipeMessageParamsPtr params_ptr(RunOrClosePipeMessageParams::New());
75 params_ptr->reserved0 = 16u; 72 params_ptr->reserved0 = 16u;
76 params_ptr->reserved1 = 0u; 73 params_ptr->reserved1 = 0u;
77 params_ptr->require_version = std::move(require_version); 74 params_ptr->require_version = std::move(require_version);
78 75
79 size_t size = 76 size_t size =
80 PrepareToSerialize<RunOrClosePipeMessageParamsPtr>(params_ptr, context); 77 PrepareToSerialize<RunOrClosePipeMessageParamsPtr>(params_ptr, context);
81 MessageBuilder builder(kRunOrClosePipeMessageId, size); 78 MessageBuilder builder(kRunOrClosePipeMessageId, size);
82 79
83 RunOrClosePipeMessageParams_Data* params = nullptr; 80 RunOrClosePipeMessageParams_Data* params = nullptr;
84 Serialize<RunOrClosePipeMessageParamsPtr>(params_ptr, builder.buffer(), 81 Serialize<RunOrClosePipeMessageParamsPtr>(params_ptr, builder.buffer(),
85 &params, context); 82 &params, context);
86 params->EncodePointers();
87 bool ok = receiver->Accept(builder.message()); 83 bool ok = receiver->Accept(builder.message());
88 ALLOW_UNUSED_LOCAL(ok); 84 ALLOW_UNUSED_LOCAL(ok);
89 } 85 }
90 86
91 void RunVersionCallback(const base::Callback<void(uint32_t)>& callback, 87 void RunVersionCallback(const base::Callback<void(uint32_t)>& callback,
92 QueryVersionResultPtr query_version_result) { 88 QueryVersionResultPtr query_version_result) {
93 callback.Run(query_version_result->version); 89 callback.Run(query_version_result->version);
94 } 90 }
95 91
96 } // namespace 92 } // namespace
97 93
98 ControlMessageProxy::ControlMessageProxy(MessageReceiverWithResponder* receiver) 94 ControlMessageProxy::ControlMessageProxy(MessageReceiverWithResponder* receiver)
99 : receiver_(receiver) { 95 : receiver_(receiver) {
100 } 96 }
101 97
102 void ControlMessageProxy::QueryVersion( 98 void ControlMessageProxy::QueryVersion(
103 const base::Callback<void(uint32_t)>& callback) { 99 const base::Callback<void(uint32_t)>& callback) {
104 SendRunMessage(receiver_, QueryVersion::New(), 100 SendRunMessage(receiver_, QueryVersion::New(),
105 base::Bind(&RunVersionCallback, callback), &context_); 101 base::Bind(&RunVersionCallback, callback), &context_);
106 } 102 }
107 103
108 void ControlMessageProxy::RequireVersion(uint32_t version) { 104 void ControlMessageProxy::RequireVersion(uint32_t version) {
109 RequireVersionPtr require_version(RequireVersion::New()); 105 RequireVersionPtr require_version(RequireVersion::New());
110 require_version->version = version; 106 require_version->version = version;
111 SendRunOrClosePipeMessage(receiver_, std::move(require_version), &context_); 107 SendRunOrClosePipeMessage(receiver_, std::move(require_version), &context_);
112 } 108 }
113 109
114 } // namespace internal 110 } // namespace internal
115 } // namespace mojo 111 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/lib/control_message_handler.cc ('k') | mojo/public/cpp/bindings/lib/map_data_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698