Index: mojo/public/cpp/bindings/lib/connector.cc |
diff --git a/mojo/public/cpp/bindings/lib/connector.cc b/mojo/public/cpp/bindings/lib/connector.cc |
index 48f4ac9cd5b3dbde193d3c2deb215a672d0b6eca..00a8580894c11d99f8e951eb07a26ada5ea6f8ea 100644 |
--- a/mojo/public/cpp/bindings/lib/connector.cc |
+++ b/mojo/public/cpp/bindings/lib/connector.cc |
@@ -12,37 +12,11 @@ |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/synchronization/lock.h" |
+#include "mojo/public/cpp/bindings/lib/may_auto_lock.h" |
#include "mojo/public/cpp/bindings/sync_handle_watcher.h" |
namespace mojo { |
-namespace { |
- |
-// Similar to base::AutoLock, except that it does nothing if |lock| passed into |
-// the constructor is null. |
-class MayAutoLock { |
- public: |
- explicit MayAutoLock(base::Lock* lock) : lock_(lock) { |
- if (lock_) |
- lock_->Acquire(); |
- } |
- |
- ~MayAutoLock() { |
- if (lock_) { |
- lock_->AssertAcquired(); |
- lock_->Release(); |
- } |
- } |
- |
- private: |
- base::Lock* lock_; |
- DISALLOW_COPY_AND_ASSIGN(MayAutoLock); |
-}; |
- |
-} // namespace |
- |
-// ---------------------------------------------------------------------------- |
- |
Connector::Connector(ScopedMessagePipeHandle message_pipe, |
ConnectorConfig config, |
scoped_refptr<base::SingleThreadTaskRunner> runner) |
@@ -73,7 +47,7 @@ void Connector::CloseMessagePipe() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
CancelWait(); |
- MayAutoLock locker(lock_.get()); |
+ internal::MayAutoLock locker(lock_.get()); |
message_pipe_.reset(); |
base::AutoLock lock(connected_lock_); |
@@ -84,7 +58,7 @@ ScopedMessagePipeHandle Connector::PassMessagePipe() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
CancelWait(); |
- MayAutoLock locker(lock_.get()); |
+ internal::MayAutoLock locker(lock_.get()); |
ScopedMessagePipeHandle message_pipe = std::move(message_pipe_); |
base::AutoLock lock(connected_lock_); |
@@ -149,7 +123,7 @@ bool Connector::Accept(Message* message) { |
if (error_) |
return false; |
- MayAutoLock locker(lock_.get()); |
+ internal::MayAutoLock locker(lock_.get()); |
if (!message_pipe_.is_valid() || drop_writes_) |
return true; |
@@ -331,7 +305,7 @@ void Connector::HandleError(bool force_pipe_reset, bool force_async_handler) { |
if (force_pipe_reset) { |
CancelWait(); |
- MayAutoLock locker(lock_.get()); |
+ internal::MayAutoLock locker(lock_.get()); |
message_pipe_.reset(); |
MessagePipe dummy_pipe; |
message_pipe_ = std::move(dummy_pipe.handle0); |