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

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

Issue 2932193002: Use OnceCallback for Mojo binding connection error handlers. (Closed)
Patch Set: Call Run() on rvalue. Created 3 years, 6 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 2013 The Chromium Authors. All rights reserved. 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 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_CONNECTOR_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_CONNECTOR_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_CONNECTOR_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_CONNECTOR_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <utility>
9 10
10 #include "base/callback.h" 11 #include "base/callback.h"
11 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
12 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
13 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
14 #include "base/optional.h" 15 #include "base/optional.h"
15 #include "base/single_thread_task_runner.h" 16 #include "base/single_thread_task_runner.h"
16 #include "base/threading/thread_checker.h" 17 #include "base/threading/thread_checker.h"
17 #include "mojo/public/cpp/bindings/bindings_export.h" 18 #include "mojo/public/cpp/bindings/bindings_export.h"
18 #include "mojo/public/cpp/bindings/message.h" 19 #include "mojo/public/cpp/bindings/message.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // Errors from incoming receivers will force the connector into an error 64 // Errors from incoming receivers will force the connector into an error
64 // state, where no more messages will be processed. This method is used 65 // state, where no more messages will be processed. This method is used
65 // during testing to prevent that from happening. 66 // during testing to prevent that from happening.
66 void set_enforce_errors_from_incoming_receiver(bool enforce) { 67 void set_enforce_errors_from_incoming_receiver(bool enforce) {
67 DCHECK(thread_checker_.CalledOnValidThread()); 68 DCHECK(thread_checker_.CalledOnValidThread());
68 enforce_errors_from_incoming_receiver_ = enforce; 69 enforce_errors_from_incoming_receiver_ = enforce;
69 } 70 }
70 71
71 // Sets the error handler to receive notifications when an error is 72 // Sets the error handler to receive notifications when an error is
72 // encountered while reading from the pipe or waiting to read from the pipe. 73 // encountered while reading from the pipe or waiting to read from the pipe.
73 void set_connection_error_handler(const base::Closure& error_handler) { 74 void set_connection_error_handler(base::OnceClosure error_handler) {
74 DCHECK(thread_checker_.CalledOnValidThread()); 75 DCHECK(thread_checker_.CalledOnValidThread());
75 connection_error_handler_ = error_handler; 76 connection_error_handler_ = std::move(error_handler);
76 } 77 }
77 78
78 // Returns true if an error was encountered while reading from the pipe or 79 // Returns true if an error was encountered while reading from the pipe or
79 // waiting to read from the pipe. 80 // waiting to read from the pipe.
80 bool encountered_error() const { 81 bool encountered_error() const {
81 DCHECK(thread_checker_.CalledOnValidThread()); 82 DCHECK(thread_checker_.CalledOnValidThread());
82 return error_; 83 return error_;
83 } 84 }
84 85
85 // Closes the pipe. The connector is put into a quiescent state. 86 // Closes the pipe. The connector is put into a quiescent state.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 // |message_pipe_| with a dummy message pipe handle (whose peer is closed). 179 // |message_pipe_| with a dummy message pipe handle (whose peer is closed).
179 // If |force_async_handler| is true, |connection_error_handler_| is called 180 // If |force_async_handler| is true, |connection_error_handler_| is called
180 // asynchronously. 181 // asynchronously.
181 void HandleError(bool force_pipe_reset, bool force_async_handler); 182 void HandleError(bool force_pipe_reset, bool force_async_handler);
182 183
183 // Cancels any calls made to |waiter_|. 184 // Cancels any calls made to |waiter_|.
184 void CancelWait(); 185 void CancelWait();
185 186
186 void EnsureSyncWatcherExists(); 187 void EnsureSyncWatcherExists();
187 188
188 base::Closure connection_error_handler_; 189 base::OnceClosure connection_error_handler_;
189 190
190 ScopedMessagePipeHandle message_pipe_; 191 ScopedMessagePipeHandle message_pipe_;
191 MessageReceiver* incoming_receiver_ = nullptr; 192 MessageReceiver* incoming_receiver_ = nullptr;
192 193
193 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 194 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
194 std::unique_ptr<SimpleWatcher> handle_watcher_; 195 std::unique_ptr<SimpleWatcher> handle_watcher_;
195 196
196 bool error_ = false; 197 bool error_ = false;
197 bool drop_writes_ = false; 198 bool drop_writes_ = false;
198 bool enforce_errors_from_incoming_receiver_ = true; 199 bool enforce_errors_from_incoming_receiver_ = true;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 // transferred (i.e., when |connected_| is set to false). 233 // transferred (i.e., when |connected_| is set to false).
233 base::WeakPtr<Connector> weak_self_; 234 base::WeakPtr<Connector> weak_self_;
234 base::WeakPtrFactory<Connector> weak_factory_; 235 base::WeakPtrFactory<Connector> weak_factory_;
235 236
236 DISALLOW_COPY_AND_ASSIGN(Connector); 237 DISALLOW_COPY_AND_ASSIGN(Connector);
237 }; 238 };
238 239
239 } // namespace mojo 240 } // namespace mojo
240 241
241 #endif // MOJO_PUBLIC_CPP_BINDINGS_CONNECTOR_H_ 242 #endif // MOJO_PUBLIC_CPP_BINDINGS_CONNECTOR_H_
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/connection_error_callback.h ('k') | mojo/public/cpp/bindings/interface_endpoint_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698