blob: b4eb2accd3f462c5b68b90f3f6447f872f94640a [file] [log] [blame]
// Copyright 2019 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 <lib/sys/cpp/testing/service_directory_provider.h>
namespace sys {
namespace testing {
ServiceDirectoryProvider::ServiceDirectoryProvider(
async_dispatcher_t* dispatcher)
: svc_dir_(std::make_unique<vfs::PseudoDir>()) {
fidl::InterfaceHandle<fuchsia::io::Directory> directory_ptr;
svc_dir_->Serve(fuchsia::io::OPEN_RIGHT_READABLE |
fuchsia::io::OPEN_RIGHT_WRITABLE,
directory_ptr.NewRequest().TakeChannel(), dispatcher);
service_directory_ =
std::make_shared<sys::ServiceDirectory>(directory_ptr.TakeChannel());
}
ServiceDirectoryProvider::~ServiceDirectoryProvider() = default;
zx_status_t ServiceDirectoryProvider::AddService(
std::unique_ptr<vfs::Service> service, const std::string& name) const {
return svc_dir_->AddEntry(name, std::move(service));
}
} // namespace testing
} // namespace sys