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

Unified Diff: third_party/mojo/src/mojo/edk/system/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/connection_manager.h
diff --git a/third_party/mojo/src/mojo/edk/system/connection_manager.h b/third_party/mojo/src/mojo/edk/system/connection_manager.h
deleted file mode 100644
index 7e569d95f6f881695b498ead8e28e6f804e03c03..0000000000000000000000000000000000000000
--- a/third_party/mojo/src/mojo/edk/system/connection_manager.h
+++ /dev/null
@@ -1,134 +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_CONNECTION_MANAGER_H_
-#define THIRD_PARTY_MOJO_SRC_MOJO_EDK_SYSTEM_CONNECTION_MANAGER_H_
-
-#include <ostream>
-
-#include "mojo/public/cpp/system/macros.h"
-#include "third_party/mojo/src/mojo/edk/system/connection_identifier.h"
-#include "third_party/mojo/src/mojo/edk/system/process_identifier.h"
-#include "third_party/mojo/src/mojo/edk/system/system_impl_export.h"
-#include "third_party/mojo/src/mojo/edk/system/thread_annotations.h"
-
-namespace mojo {
-
-namespace embedder {
-class PlatformSupport;
-class ScopedPlatformHandle;
-} // namespace embedder
-
-namespace system {
-
-// |ConnectionManager| is an interface for the system that allows "connections"
-// (i.e., native "pipes") to be established between different processes.
-//
-// The starting point for establishing such a connection is that the two
-// processes (not necessarily distinct) are provided with a common
-// |ConnectionIdentifier|, and also some (probably indirect, temporary) way of
-// communicating.
-//
-// (The usual case for this are processes A, B, C, with connections A <-> B <->
-// C, with the goal being to establish a direct connection A <-> C. Process B
-// generates a |ConnectionIdentifier| that it transmits to A and C, and serves
-// as an intermediary until A and C are directly connected.)
-//
-// To establish such a connection, each process calls |AllowConnect()| with the
-// common |ConnectionIdentifier|. Each process then informs the other process
-// that it has done so. Once a process knows that both processes have called
-// |AllowConnect()|, it proceeds to call |Connect()|.
-//
-// On success, if the two processes are in fact distinct, |Connect()| provides a
-// native (platform) handle for a "pipe" that connects/will connect the two
-// processes. (If they are in fact the same process, success will simply yield
-// no valid handle, to indicate this case.)
-//
-// Additionally, on success |Connect()| also provides a unique identifier for
-// the peer process. In this way, processes may recognize when they already have
-// a direct connection and reuse that, disposing of the new one provided by
-// |Connect()|. (TODO(vtl): This is somewhat wasteful, but removes the need to
-// handle various race conditions, and for the "master" process -- see below --
-// to track connection teardowns.)
-//
-// Implementation notes: We implement this using a "star topology", with a
-// single trusted "master" (broker) process and an arbitrary number of untrusted
-// "slave" (client) processes. The former is implemented by
-// |MasterConnectionManager| (master_connection_manager.*) and the latter by
-// |SlaveConnectionManager| (slave_connection_manager.*). Each slave is
-// connected to the master by a special dedicated |RawChannel|, on which it does
-// synchronous IPC (note, however, that the master should never block on any
-// slave).
-class MOJO_SYSTEM_IMPL_EXPORT ConnectionManager {
- public:
- enum class Result {
- FAILURE = 0,
- SUCCESS,
- // These results are used for |Connect()| (which also uses |FAILURE|, but
- // not |SUCCESS|).
- SUCCESS_CONNECT_SAME_PROCESS,
- SUCCESS_CONNECT_NEW_CONNECTION,
- SUCCESS_CONNECT_REUSE_CONNECTION
- };
-
- virtual ~ConnectionManager() {}
-
- ConnectionIdentifier GenerateConnectionIdentifier();
-
- // Shuts down this connection manager. No other methods may be called after
- // this is (or while it is being) called.
- virtual void Shutdown() MOJO_NOT_THREAD_SAFE = 0;
-
- // TODO(vtl): Add a "get my own process identifier" method?
-
- // All of the methods below return true on success or false on failure.
- // Failure is obviously fatal for the establishment of a particular
- // connection, but should not be treated as fatal to the process. Failure may,
- // e.g., be caused by a misbehaving (malicious) untrusted peer process.
-
- // Allows a process who makes the identical call (with equal |connection_id|)
- // to connect to the calling process. (On success, there will be a "pending
- // connection" for the given |connection_id| for the calling process.)
- virtual bool AllowConnect(const ConnectionIdentifier& connection_id) = 0;
-
- // Cancels a pending connection for the calling process. (Note that this may
- // fail even if |AllowConnect()| succeeded; regardless, |Connect()| should not
- // be called.)
- virtual bool CancelConnect(const ConnectionIdentifier& connection_id) = 0;
-
- // Connects a pending connection; to be called only after both parties have
- // called |AllowConnect()|. On success, |Result::SUCCESS_CONNECT_...| is
- // returned, |peer_process_identifier| is set to an unique identifier for the
- // peer process, and |is_first| is set to true if this is the first party to
- // call |Connect()|. In the case of |SUCCESS_CONNECT_SAME_PROCESS|,
- // |*platform_handle| is set to a suitable native handle connecting the two
- // parties.
- virtual Result Connect(const ConnectionIdentifier& connection_id,
- ProcessIdentifier* peer_process_identifier,
- bool* is_first,
- embedder::ScopedPlatformHandle* platform_handle) = 0;
-
- protected:
- // |platform_support| must be valid and remain alive until after |Shutdown()|
- // has completed.
- explicit ConnectionManager(embedder::PlatformSupport* platform_support)
- : platform_support_(platform_support) {}
-
- private:
- embedder::PlatformSupport* const platform_support_;
-
- MOJO_DISALLOW_COPY_AND_ASSIGN(ConnectionManager);
-};
-
-// So logging macros and |DCHECK_EQ()|, etc. work.
-MOJO_SYSTEM_IMPL_EXPORT inline std::ostream& operator<<(
- std::ostream& out,
- ConnectionManager::Result result) {
- return out << static_cast<int>(result);
-}
-
-} // namespace system
-} // namespace mojo
-
-#endif // THIRD_PARTY_MOJO_SRC_MOJO_EDK_SYSTEM_CONNECTION_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698