| // Copyright 2017 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. |
| |
| #include "mojo/edk/embedder/peer_connection.h" |
| |
| #include "mojo/edk/embedder/embedder_internal.h" |
| #include "mojo/edk/system/core.h" |
| |
| namespace mojo { |
| namespace edk { |
| |
| PeerConnection::PeerConnection() = default; |
| |
| PeerConnection::~PeerConnection() { |
| if (is_connected_) |
| internal::g_core->ClosePeerConnection(connection_id_); |
| } |
| |
| ScopedMessagePipeHandle PeerConnection::Connect(ConnectionParams params) { |
| DCHECK(!is_connected_); |
| is_connected_ = true; |
| |
| ports::PortRef peer_port; |
| auto pipe = internal::g_core->CreatePartialMessagePipe(&peer_port); |
| connection_id_ = |
| internal::g_core->ConnectToPeer(std::move(params), peer_port); |
| return pipe; |
| } |
| |
| } // namespace edk |
| } // namespace mojo |