blob: 77b2648883769a75ff6177ebdf842b5bff3f76cd [file] [log] [blame]
// 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