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

Unified Diff: mojo/public/cpp/bindings/lib/multiplex_router.h

Issue 2100683002: Mojo C++ Bindings: Extract AssociatedGroupController from MultiplexRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: oops more gyp ugh Created 4 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 side-by-side diff with in-line comments
Download patch
Index: mojo/public/cpp/bindings/lib/multiplex_router.h
diff --git a/mojo/public/cpp/bindings/lib/multiplex_router.h b/mojo/public/cpp/bindings/lib/multiplex_router.h
index 9f0de154d3670c9e6508b77e6e38cb4cbc820f92..afd7090310cc91053cbcc99ef1356abccdd9a3df 100644
--- a/mojo/public/cpp/bindings/lib/multiplex_router.h
+++ b/mojo/public/cpp/bindings/lib/multiplex_router.h
@@ -15,13 +15,13 @@
#include "base/logging.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
-#include "base/memory/ref_counted_delete_on_message_loop.h"
#include "base/memory/weak_ptr.h"
#include "base/single_thread_task_runner.h"
#include "base/synchronization/lock.h"
#include "base/threading/thread_checker.h"
+#include "mojo/public/cpp/bindings/associated_group_controller.h"
+#include "mojo/public/cpp/bindings/interface_id.h"
#include "mojo/public/cpp/bindings/lib/connector.h"
-#include "mojo/public/cpp/bindings/lib/interface_id.h"
#include "mojo/public/cpp/bindings/lib/message_header_validator.h"
#include "mojo/public/cpp/bindings/lib/pipe_control_message_handler.h"
#include "mojo/public/cpp/bindings/lib/pipe_control_message_handler_delegate.h"
@@ -38,9 +38,6 @@ class AssociatedGroup;
namespace internal {
-class InterfaceEndpointClient;
-class InterfaceEndpointController;
-
// MultiplexRouter supports routing messages for multiple interfaces over a
// single message pipe.
//
@@ -52,7 +49,7 @@ class InterfaceEndpointController;
// comments for more details.
class MultiplexRouter
: public MessageReceiver,
- public base::RefCountedDeleteOnMessageLoop<MultiplexRouter>,
+ public AssociatedGroupController,
public PipeControlMessageHandlerDelegate {
public:
// If |set_interface_id_namespace_bit| is true, the interface IDs generated by
@@ -68,42 +65,20 @@ class MultiplexRouter
// ---------------------------------------------------------------------------
// The following public methods are safe to call from any threads.
- // Creates a pair of interface endpoint handles. The method generates a new
- // interface ID and assigns it to the two handles. |local_endpoint| is used
- // locally; while |remote_endpoint| is sent over the message pipe.
- void CreateEndpointHandlePair(ScopedInterfaceEndpointHandle* local_endpoint,
- ScopedInterfaceEndpointHandle* remote_endpoint);
-
- // Creates an interface endpoint handle from a given interface ID. The handle
- // is used locally.
- // Typically, this method is used to (1) create an endpoint handle for the
- // master interface; or (2) create an endpoint handle on receiving an
- // interface ID from the message pipe.
- ScopedInterfaceEndpointHandle CreateLocalEndpointHandle(InterfaceId id);
-
- // Closes an interface endpoint handle.
- void CloseEndpointHandle(InterfaceId id, bool is_local);
-
- // Attaches a client to the specified endpoint to send and receive messages.
- // The returned object is still owned by the router. It must only be used on
- // the same thread as this call, and only before the client is detached using
- // DetachEndpointClient().
+ // AssociatedGroupController implementation:
+ void CreateEndpointHandlePair(
+ ScopedInterfaceEndpointHandle* local_endpoint,
+ ScopedInterfaceEndpointHandle* remote_endpoint) override;
+ ScopedInterfaceEndpointHandle CreateLocalEndpointHandle(
+ InterfaceId id) override;
+ void CloseEndpointHandle(InterfaceId id, bool is_local) override;
InterfaceEndpointController* AttachEndpointClient(
const ScopedInterfaceEndpointHandle& handle,
InterfaceEndpointClient* endpoint_client,
- scoped_refptr<base::SingleThreadTaskRunner> runner);
-
- // Detaches the client attached to the specified endpoint. It must be called
- // on the same thread as the corresponding AttachEndpointClient() call.
- void DetachEndpointClient(const ScopedInterfaceEndpointHandle& handle);
-
- // Raises an error on the underlying message pipe. It disconnects the pipe
- // and notifies all interfaces running on this pipe.
- void RaiseError();
-
- std::unique_ptr<AssociatedGroup> CreateAssociatedGroup();
-
- static MultiplexRouter* GetRouter(AssociatedGroup* associated_group);
+ scoped_refptr<base::SingleThreadTaskRunner> runner) override;
+ void DetachEndpointClient(
+ const ScopedInterfaceEndpointHandle& handle) override;
+ void RaiseError() override;
// ---------------------------------------------------------------------------
// The following public methods are called on the creating thread.
@@ -157,9 +132,6 @@ class MultiplexRouter
}
private:
- friend class base::RefCountedDeleteOnMessageLoop<MultiplexRouter>;
- friend class base::DeleteHelper<MultiplexRouter>;
-
class InterfaceEndpoint;
struct Task;
« no previous file with comments | « mojo/public/cpp/bindings/lib/interface_ptr_state.h ('k') | mojo/public/cpp/bindings/lib/multiplex_router.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698