Index: mojo/common/weak_binding_set.h |
diff --git a/mojo/common/weak_binding_set.h b/mojo/common/weak_binding_set.h |
deleted file mode 100644 |
index 87383889621c8e880f8523d77c37ad54a77314b7..0000000000000000000000000000000000000000 |
--- a/mojo/common/weak_binding_set.h |
+++ /dev/null |
@@ -1,106 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef MOJO_COMMON_WEAK_BINDING_SET_H_ |
-#define MOJO_COMMON_WEAK_BINDING_SET_H_ |
- |
-#include <algorithm> |
-#include <vector> |
- |
-#include "base/memory/weak_ptr.h" |
-#include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" |
- |
-namespace mojo { |
- |
-template <typename Interface> |
-class WeakBinding; |
- |
-// Use this class to manage a set of weak pointers to bindings each of which is |
-// owned by the pipe they are bound to. |
-template <typename Interface> |
-class WeakBindingSet : public ErrorHandler { |
- public: |
- WeakBindingSet() : error_handler_(nullptr) {} |
- ~WeakBindingSet() { CloseAllBindings(); } |
- |
- void set_error_handler(ErrorHandler* error_handler) { |
- error_handler_ = error_handler; |
- } |
- |
- void AddBinding(Interface* impl, InterfaceRequest<Interface> request) { |
- auto binding = new WeakBinding<Interface>(impl, request.Pass()); |
- binding->set_error_handler(this); |
- bindings_.push_back(binding->GetWeakPtr()); |
- } |
- |
- void CloseAllBindings() { |
- for (const auto& it : bindings_) { |
- if (it) |
- it->Close(); |
- } |
- bindings_.clear(); |
- } |
- |
- private: |
- // ErrorHandler implementation. |
- void OnConnectionError() override { |
- // Clear any deleted bindings. |
- bindings_.erase( |
- std::remove_if(bindings_.begin(), bindings_.end(), |
- [](const base::WeakPtr<WeakBinding<Interface>>& p) { |
- return p.get() == nullptr; |
- }), |
- bindings_.end()); |
- |
- if (error_handler_) |
- error_handler_->OnConnectionError(); |
- } |
- |
- ErrorHandler* error_handler_; |
- std::vector<base::WeakPtr<WeakBinding<Interface>>> bindings_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WeakBindingSet); |
-}; |
- |
-template <typename Interface> |
-class WeakBinding : public ErrorHandler { |
- public: |
- WeakBinding(Interface* impl, InterfaceRequest<Interface> request) |
- : binding_(impl, request.Pass()), |
- error_handler_(nullptr), |
- weak_ptr_factory_(this) { |
- binding_.set_error_handler(this); |
- } |
- |
- ~WeakBinding() override {} |
- |
- void set_error_handler(ErrorHandler* error_handler) { |
- error_handler_ = error_handler; |
- } |
- |
- base::WeakPtr<WeakBinding> GetWeakPtr() { |
- return weak_ptr_factory_.GetWeakPtr(); |
- } |
- |
- void Close() { binding_.Close(); } |
- |
- // ErrorHandler implementation. |
- void OnConnectionError() override { |
- ErrorHandler* error_handler = error_handler_; |
- delete this; |
- if (error_handler) |
- error_handler->OnConnectionError(); |
- } |
- |
- private: |
- mojo::Binding<Interface> binding_; |
- ErrorHandler* error_handler_; |
- base::WeakPtrFactory<WeakBinding> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WeakBinding); |
-}; |
- |
-} // namespace mojo |
- |
-#endif // MOJO_COMMON_WEAK_BINDING_SET_H_ |