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

Unified Diff: mojo/public/cpp/bindings/lib/interface_endpoint_client.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/interface_endpoint_client.h
diff --git a/mojo/public/cpp/bindings/lib/interface_endpoint_client.h b/mojo/public/cpp/bindings/lib/interface_endpoint_client.h
deleted file mode 100644
index 8c72ff12cb2c2d4029f71f153859b8c51943052c..0000000000000000000000000000000000000000
--- a/mojo/public/cpp/bindings/lib/interface_endpoint_client.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2015 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_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_ENDPOINT_CLIENT_H_
-#define MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_ENDPOINT_CLIENT_H_
-
-#include <stdint.h>
-
-#include <map>
-#include <memory>
-
-#include "base/callback.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread_checker.h"
-#include "mojo/public/cpp/bindings/message.h"
-#include "mojo/public/cpp/bindings/message_filter.h"
-#include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h"
-
-namespace mojo {
-
-class AssociatedGroup;
-
-namespace internal {
-
-class MultiplexRouter;
-class InterfaceEndpointController;
-
-// InterfaceEndpointClient handles message sending and receiving of an interface
-// endpoint, either the implementation side or the client side.
-// It should only be accessed and destructed on the creating thread.
-class InterfaceEndpointClient : public MessageReceiverWithResponder {
- public:
- // |receiver| is okay to be null. If it is not null, it must outlive this
- // object.
- InterfaceEndpointClient(ScopedInterfaceEndpointHandle handle,
- MessageReceiverWithResponderStatus* receiver,
- std::unique_ptr<MessageFilter> payload_validator,
- bool expect_sync_requests,
- scoped_refptr<base::SingleThreadTaskRunner> runner);
- ~InterfaceEndpointClient() override;
-
- // Sets the error handler to receive notifications when an error is
- // encountered.
- void set_connection_error_handler(const base::Closure& error_handler) {
- DCHECK(thread_checker_.CalledOnValidThread());
- error_handler_ = error_handler;
- }
-
- // Returns true if an error was encountered.
- bool encountered_error() const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return encountered_error_;
- }
-
- // Returns true if this endpoint has any pending callbacks.
- bool has_pending_responders() const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return !async_responders_.empty() || !sync_responses_.empty();
- }
-
- MultiplexRouter* router() const { return handle_.router(); }
- AssociatedGroup* associated_group();
- uint32_t interface_id() const;
-
- // After this call the object is in an invalid state and shouldn't be reused.
- ScopedInterfaceEndpointHandle PassHandle();
-
- // Raises an error on the underlying message pipe. It disconnects the pipe
- // and notifies all interfaces running on this pipe.
- void RaiseError();
-
- // MessageReceiverWithResponder implementation:
- bool Accept(Message* message) override;
- bool AcceptWithResponder(Message* message,
- MessageReceiver* responder) override;
-
- // The following methods are called by the router. They must be called
- // outside of the router's lock.
-
- // NOTE: |message| must have passed message header validation.
- bool HandleIncomingMessage(Message* message);
- void NotifyError();
-
- private:
- // Maps from the id of a response to the MessageReceiver that handles the
- // response.
- using AsyncResponderMap =
- std::map<uint64_t, std::unique_ptr<MessageReceiver>>;
-
- struct SyncResponseInfo {
- public:
- explicit SyncResponseInfo(bool* in_response_received);
- ~SyncResponseInfo();
-
- std::unique_ptr<Message> response;
-
- // Points to a stack-allocated variable.
- bool* response_received;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SyncResponseInfo);
- };
-
- using SyncResponseMap = std::map<uint64_t, std::unique_ptr<SyncResponseInfo>>;
-
- // Used as the sink for |payload_validator_| and forwards messages to
- // HandleValidatedMessage().
- class HandleIncomingMessageThunk : public MessageReceiver {
- public:
- explicit HandleIncomingMessageThunk(InterfaceEndpointClient* owner);
- ~HandleIncomingMessageThunk() override;
-
- // MessageReceiver implementation:
- bool Accept(Message* message) override;
-
- private:
- InterfaceEndpointClient* const owner_;
-
- DISALLOW_COPY_AND_ASSIGN(HandleIncomingMessageThunk);
- };
-
- bool HandleValidatedMessage(Message* message);
-
- ScopedInterfaceEndpointHandle handle_;
- std::unique_ptr<AssociatedGroup> associated_group_;
- InterfaceEndpointController* controller_;
-
- MessageReceiverWithResponderStatus* const incoming_receiver_;
- std::unique_ptr<MessageFilter> payload_validator_;
- HandleIncomingMessageThunk thunk_;
-
- AsyncResponderMap async_responders_;
- SyncResponseMap sync_responses_;
-
- uint64_t next_request_id_;
-
- base::Closure error_handler_;
- bool encountered_error_;
-
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-
- base::ThreadChecker thread_checker_;
-
- base::WeakPtrFactory<InterfaceEndpointClient> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(InterfaceEndpointClient);
-};
-
-} // namespace internal
-} // namespace mojo
-
-#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_ENDPOINT_CLIENT_H_

Powered by Google App Engine
This is Rietveld 408576698