blob: a4139b591bd42cf880e2b98f3786ffe1f8f96a0a [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 = ScopedMessagePipeHandle(MessagePipeHandle(
internal::g_core->CreatePartialMessagePipe(&peer_port)));
connection_id_ =
internal::g_core->ConnectToPeer(std::move(params), peer_port);
return pipe;
}
} // namespace edk
} // namespace mojo