blob: 17668e15ea688120b6e95b22fa4940beaf603d37 [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 "garnet/bin/guest/vmm/instance_controller_impl.h"
#include <lib/fxl/logging.h>
static zx::socket duplicate(const zx::socket& socket) {
zx::socket dup;
zx_status_t status = socket.duplicate(ZX_RIGHT_SAME_RIGHTS, &dup);
FXL_CHECK(status == ZX_OK) << "Failed to duplicate socket " << status;
return dup;
}
InstanceControllerImpl::InstanceControllerImpl() {
zx_status_t status = zx::socket::create(0, &socket_, &remote_socket_);
FXL_CHECK(status == ZX_OK) << "Failed to create socket";
}
zx_status_t InstanceControllerImpl::AddPublicService(
component::StartupContext* context) {
return context->outgoing().AddPublicService(bindings_.GetHandler(this));
}
zx::socket InstanceControllerImpl::SerialSocket() { return duplicate(socket_); }
void InstanceControllerImpl::GetSerial(GetSerialCallback callback) {
callback(duplicate(remote_socket_));
}