blob: 1d1bf4b898a698984bb0c157f752ef718f5cc166 [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/sys/cpp/component_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