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

Side by Side Diff: mojo/public/cpp/bindings/message.h

Issue 2766523002: mojo: MessageReceiver*::AcceptWithResponder() now take a unique_ptr to the responder (Closed)
Patch Set: fix mac compile, use ignore_result more Created 3 years, 9 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 177
178 class MessageReceiverWithResponder : public MessageReceiver { 178 class MessageReceiverWithResponder : public MessageReceiver {
179 public: 179 public:
180 ~MessageReceiverWithResponder() override {} 180 ~MessageReceiverWithResponder() override {}
181 181
182 // A variant on Accept that registers a MessageReceiver (known as the 182 // A variant on Accept that registers a MessageReceiver (known as the
183 // responder) to handle the response message generated from the given 183 // responder) to handle the response message generated from the given
184 // message. The responder's Accept method may be called during 184 // message. The responder's Accept method may be called during
185 // AcceptWithResponder or some time after its return. 185 // AcceptWithResponder or some time after its return.
186 // 186 //
187 // NOTE: Upon returning true, AcceptWithResponder assumes ownership of 187 // NOTE: If AcceptWithReponder returns false, |responder| may be deleted
188 // |responder| and will delete it after calling |responder->Accept| or upon 188 // immediately. Otherwise it will delete it after calling |responder->Accept|
189 // its own destruction. 189 // or upon its own destruction.
190 // 190 virtual bool AcceptWithResponder(Message* message,
191 // TODO(yzshen): consider changing |responder| to 191 std::unique_ptr<MessageReceiver> responder)
192 // std::unique_ptr<MessageReceiver>.
193 virtual bool AcceptWithResponder(Message* message, MessageReceiver* responder)
194 WARN_UNUSED_RESULT = 0; 192 WARN_UNUSED_RESULT = 0;
195 }; 193 };
196 194
197 // A MessageReceiver that is also able to provide status about the state 195 // A MessageReceiver that is also able to provide status about the state
198 // of the underlying MessagePipe to which it will be forwarding messages 196 // of the underlying MessagePipe to which it will be forwarding messages
199 // received via the |Accept()| call. 197 // received via the |Accept()| call.
200 class MessageReceiverWithStatus : public MessageReceiver { 198 class MessageReceiverWithStatus : public MessageReceiver {
201 public: 199 public:
202 ~MessageReceiverWithStatus() override {} 200 ~MessageReceiverWithStatus() override {}
203 201
(...skipping 12 matching lines...) Expand all
216 // of the MessagePipe which will carry the responses. 214 // of the MessagePipe which will carry the responses.
217 class MessageReceiverWithResponderStatus : public MessageReceiver { 215 class MessageReceiverWithResponderStatus : public MessageReceiver {
218 public: 216 public:
219 ~MessageReceiverWithResponderStatus() override {} 217 ~MessageReceiverWithResponderStatus() override {}
220 218
221 // A variant on Accept that registers a MessageReceiverWithStatus (known as 219 // A variant on Accept that registers a MessageReceiverWithStatus (known as
222 // the responder) to handle the response message generated from the given 220 // the responder) to handle the response message generated from the given
223 // message. Any of the responder's methods (Accept or IsValid) may be called 221 // message. Any of the responder's methods (Accept or IsValid) may be called
224 // during AcceptWithResponder or some time after its return. 222 // during AcceptWithResponder or some time after its return.
225 // 223 //
226 // NOTE: Upon returning true, AcceptWithResponder assumes ownership of 224 // NOTE: If AcceptWithReponder returns false, |responder| may be deleted
227 // |responder| and will delete it after calling |responder->Accept| or upon 225 // immediately. Otherwise it will delete it after calling |responder->Accept|
yzshen1 2017/03/21 16:10:00 ditto.
watk 2017/03/22 07:09:15 Done.
228 // its own destruction. 226 // or upon its own destruction.
229 //
230 // TODO(yzshen): consider changing |responder| to
231 // std::unique_ptr<MessageReceiver>.
232 virtual bool AcceptWithResponder(Message* message, 227 virtual bool AcceptWithResponder(Message* message,
233 MessageReceiverWithStatus* responder) 228 std::unique_ptr<MessageReceiverWithStatus>
234 WARN_UNUSED_RESULT = 0; 229 responder) WARN_UNUSED_RESULT = 0;
235 }; 230 };
236 231
237 class MOJO_CPP_BINDINGS_EXPORT PassThroughFilter 232 class MOJO_CPP_BINDINGS_EXPORT PassThroughFilter
238 : NON_EXPORTED_BASE(public MessageReceiver) { 233 : NON_EXPORTED_BASE(public MessageReceiver) {
239 public: 234 public:
240 PassThroughFilter(); 235 PassThroughFilter();
241 ~PassThroughFilter() override; 236 ~PassThroughFilter() override;
242 237
243 // MessageReceiver: 238 // MessageReceiver:
244 bool Accept(Message* message) override; 239 bool Accept(Message* message) override;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // Message as bad. Note that this is only legal to call from directly within the 301 // Message as bad. Note that this is only legal to call from directly within the
307 // stack frame of a message dispatch, but the returned callback may be called 302 // stack frame of a message dispatch, but the returned callback may be called
308 // exactly once any time thereafter to report the message as bad. This may only 303 // exactly once any time thereafter to report the message as bad. This may only
309 // be called once per message. 304 // be called once per message.
310 MOJO_CPP_BINDINGS_EXPORT 305 MOJO_CPP_BINDINGS_EXPORT
311 ReportBadMessageCallback GetBadMessageCallback(); 306 ReportBadMessageCallback GetBadMessageCallback();
312 307
313 } // namespace mojo 308 } // namespace mojo
314 309
315 #endif // MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_ 310 #endif // MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698