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

Unified Diff: third_party/mojo/src/mojo/edk/system/master_connection_manager.h

Issue 1676913002: [mojo] Delete third_party/mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: let's try that again Created 4 years, 10 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: third_party/mojo/src/mojo/edk/system/master_connection_manager.h
diff --git a/third_party/mojo/src/mojo/edk/system/master_connection_manager.h b/third_party/mojo/src/mojo/edk/system/master_connection_manager.h
deleted file mode 100644
index 0ebad055ff4936ee3c0d027fa72532ea06b81496..0000000000000000000000000000000000000000
--- a/third_party/mojo/src/mojo/edk/system/master_connection_manager.h
+++ /dev/null
@@ -1,177 +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 THIRD_PARTY_MOJO_SRC_MOJO_EDK_SYSTEM_MASTER_CONNECTION_MANAGER_H_
-#define THIRD_PARTY_MOJO_SRC_MOJO_EDK_SYSTEM_MASTER_CONNECTION_MANAGER_H_
-
-#include <stdint.h>
-
-#include "base/containers/hash_tables.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread.h"
-#include "mojo/public/cpp/system/macros.h"
-#include "third_party/mojo/src/mojo/edk/embedder/scoped_platform_handle.h"
-#include "third_party/mojo/src/mojo/edk/system/connection_manager.h"
-#include "third_party/mojo/src/mojo/edk/system/mutex.h"
-#include "third_party/mojo/src/mojo/edk/system/system_impl_export.h"
-
-namespace base {
-class TaskRunner;
-class WaitableEvent;
-}
-
-namespace mojo {
-
-namespace embedder {
-class MasterProcessDelegate;
-using SlaveInfo = void*;
-}
-
-namespace system {
-
-// The |ConnectionManager| implementation for the master process.
-//
-// This class is thread-safe (except that no public methods may be called from
-// its internal, private thread), with condition that |Init()| be called before
-// anything else and |Shutdown()| be called before destruction (and no other
-// public methods may be called during/after |Shutdown()|).
-class MOJO_SYSTEM_IMPL_EXPORT MasterConnectionManager final
- : public ConnectionManager {
- public:
- // Note: None of the public methods may be called from |private_thread_|.
-
- // |platform_support| must be valid and remain alive until after |Shutdown()|
- // has completed.
- explicit MasterConnectionManager(embedder::PlatformSupport* platform_support);
- ~MasterConnectionManager() override;
-
- // No other methods may be called until after this has been called.
- // |delegate_thread_task_runner| should be the task runner for the "delegate
- // thread", on which |master_process_delegate|'s methods will be called. Both
- // must stay alive at least until after |Shutdown()| has been called.
- void Init(embedder::MasterProcessDelegate* master_process_delegate)
- MOJO_NOT_THREAD_SAFE;
-
- // Adds a slave process and sets up/tracks a connection to that slave (using
- // |platform_handle|). |slave_info| is used by the caller/implementation of
- // |embedder::MasterProcessDelegate| to track this process. It must remain
- // alive until the delegate's |OnSlaveDisconnect()| is called with it as the
- // argument. |OnSlaveDisconnect()| will always be called for each slave,
- // assuming proper shutdown. Returns the process identifier for the
- // newly-added slave.
- ProcessIdentifier AddSlave(embedder::SlaveInfo slave_info,
- embedder::ScopedPlatformHandle platform_handle);
-
- // Like |AddSlave()|, but allows a connection to be bootstrapped: both the
- // master and slave may call |Connect()| with |connection_id| immediately (as
- // if both had already called |AllowConnect()|). |connection_id| must be
- // unique (i.e., not previously used).
- // TODO(vtl): Is |AddSlave()| really needed? (It's probably mostly useful for
- // tests.)
- ProcessIdentifier AddSlaveAndBootstrap(
- embedder::SlaveInfo slave_info,
- embedder::ScopedPlatformHandle platform_handle,
- const ConnectionIdentifier& connection_id);
-
- // |ConnectionManager| methods:
- void Shutdown() override MOJO_NOT_THREAD_SAFE;
- bool AllowConnect(const ConnectionIdentifier& connection_id) override;
- bool CancelConnect(const ConnectionIdentifier& connection_id) override;
- Result Connect(const ConnectionIdentifier& connection_id,
- ProcessIdentifier* peer_process_identifier,
- bool* is_first,
- embedder::ScopedPlatformHandle* platform_handle) override;
-
- private:
- class Helper;
-
- // These should be thread-safe and may be called on any thread, including
- // |private_thread_|:
- bool AllowConnectImpl(ProcessIdentifier process_identifier,
- const ConnectionIdentifier& connection_id);
- bool CancelConnectImpl(ProcessIdentifier process_identifier,
- const ConnectionIdentifier& connection_id);
- Result ConnectImpl(ProcessIdentifier process_identifier,
- const ConnectionIdentifier& connection_id,
- ProcessIdentifier* peer_process_identifier,
- bool* is_first,
- embedder::ScopedPlatformHandle* platform_handle);
-
- // Helper for |ConnectImpl()|. This is called when the two process identifiers
- // are known (and known to be valid), and all that remains is to determine the
- // |Result| and provide a platform handle if appropriate. (This will never
- // return |Result::FAILURE|.)
- Result ConnectImplHelperNoLock(
- ProcessIdentifier process_identifier,
- ProcessIdentifier peer_process_identifier,
- embedder::ScopedPlatformHandle* platform_handle)
- MOJO_EXCLUSIVE_LOCKS_REQUIRED(mutex_);
-
- // These should only be called on |private_thread_|:
- void ShutdownOnPrivateThread() MOJO_NOT_THREAD_SAFE;
- // Signals |*event| on completion.
- void AddSlaveOnPrivateThread(embedder::SlaveInfo slave_info,
- embedder::ScopedPlatformHandle platform_handle,
- ProcessIdentifier slave_process_identifier,
- base::WaitableEvent* event);
- // Called by |Helper::OnError()|.
- void OnError(ProcessIdentifier process_identifier);
- // Posts a call to |master_process_delegate_->OnSlaveDisconnect()|.
- void CallOnSlaveDisconnect(embedder::SlaveInfo slave_info);
-
- // Asserts that the current thread is *not* |private_thread_| (no-op if
- // DCHECKs are not enabled). This should only be called while
- // |private_thread_| is alive (i.e., after |Init()| but before |Shutdown()|).
- void AssertNotOnPrivateThread() const;
-
- // Asserts that the current thread is |private_thread_| (no-op if DCHECKs are
- // not enabled). This should only be called while |private_thread_| is alive
- // (i.e., after |Init()| but before |Shutdown()|).
- void AssertOnPrivateThread() const;
-
- // These are set in |Init()| before |private_thread_| exists and only cleared
- // in |Shutdown()| after |private_thread_| is dead. Thus it's safe to "use" on
- // |private_thread_|. (Note that |master_process_delegate_| may only be called
- // from the delegate thread.)
- scoped_refptr<base::TaskRunner> delegate_thread_task_runner_;
- embedder::MasterProcessDelegate* master_process_delegate_;
-
- // This is a private I/O thread on which this class does the bulk of its work.
- // It is started in |Init()| and terminated in |Shutdown()|.
- base::Thread private_thread_;
-
- // The following members are only accessed on |private_thread_|:
- base::hash_map<ProcessIdentifier, Helper*> helpers_; // Owns its values.
-
- // Note: |mutex_| is not needed in the constructor, |Init()|,
- // |Shutdown()|/|ShutdownOnPrivateThread()|, or the destructor
- Mutex mutex_;
-
- ProcessIdentifier next_process_identifier_ MOJO_GUARDED_BY(mutex_);
-
- // Stores information on pending calls to |AllowConnect()|/|Connect()| (or
- // |CancelConnect()|, namely those for which at least one party has called
- // |AllowConnect()| but both have not yet called |Connect()| (or
- // |CancelConnect()|).
- struct PendingConnectInfo;
- base::hash_map<ConnectionIdentifier, PendingConnectInfo*> pending_connects_
- MOJO_GUARDED_BY(mutex_); // Owns its values.
-
- // A |ProcessConnections| stores information about connections "from" a given
- // (fixed, implied) process "to" other processes. A connection may be not
- // present, running (meaning that both sides have connected and been given
- // platform handles to a connected "pipe"), or pending (meaning that the
- // "from" side must still be given a platform handle).
- class ProcessConnections;
- // This is a map from "from" processes to its |ProcessConnections| (above).
- base::hash_map<ProcessIdentifier, ProcessConnections*> connections_
- MOJO_GUARDED_BY(mutex_); // Owns its values.
-
- MOJO_DISALLOW_COPY_AND_ASSIGN(MasterConnectionManager);
-};
-
-} // namespace system
-} // namespace mojo
-
-#endif // THIRD_PARTY_MOJO_SRC_MOJO_EDK_SYSTEM_MASTER_CONNECTION_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698