blob: 21a6b5b0d3e6239dc560a81fbaedfbfaf43bfa1e [file] [log] [blame]
// Copyright 2017 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 "peridot/bin/context_engine/context_engine_impl.h"
#include <lib/component/cpp/startup_context.h>
#include "peridot/bin/context_engine/context_reader_impl.h"
#include "peridot/bin/context_engine/context_repository.h"
#include "peridot/bin/context_engine/context_writer_impl.h"
namespace modular {
ContextEngineImpl::ContextEngineImpl(
fuchsia::modular::EntityResolver* const entity_resolver)
: entity_resolver_(entity_resolver) {}
ContextEngineImpl::~ContextEngineImpl() = default;
fxl::WeakPtr<ContextDebugImpl> ContextEngineImpl::debug() {
return repository_.debug()->GetWeakPtr();
}
void ContextEngineImpl::AddBinding(
fidl::InterfaceRequest<fuchsia::modular::ContextEngine> request) {
bindings_.AddBinding(this, std::move(request));
}
void ContextEngineImpl::GetWriter(
fuchsia::modular::ComponentScope client_info,
fidl::InterfaceRequest<fuchsia::modular::ContextWriter> request) {
writers_.emplace_back(std::make_unique<ContextWriterImpl>(
std::move(client_info), &repository_, entity_resolver_,
std::move(request)));
}
void ContextEngineImpl::GetReader(
fuchsia::modular::ComponentScope client_info,
fidl::InterfaceRequest<fuchsia::modular::ContextReader> request) {
readers_.emplace_back(std::make_unique<ContextReaderImpl>(
std::move(client_info), &repository_, std::move(request)));
}
void ContextEngineImpl::GetContextDebug(
fidl::InterfaceRequest<fuchsia::modular::ContextDebug> request) {
repository_.AddDebugBinding(std::move(request));
}
} // namespace modular