blob: 6056fe198a7f8ff9f07af7c4fea7d004c97dddac [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_reader_impl.h"
#include <lib/fidl/cpp/clone.h>
#include "peridot/bin/context_engine/context_repository.h"
namespace modular {
ContextReaderImpl::ContextReaderImpl(
fuchsia::modular::ComponentScope client_info, ContextRepository* repository,
fidl::InterfaceRequest<fuchsia::modular::ContextReader> request)
: binding_(this, std::move(request)), repository_(repository) {
debug_.client_info = std::move(client_info);
}
ContextReaderImpl::~ContextReaderImpl() = default;
void ContextReaderImpl::Subscribe(
fuchsia::modular::ContextQuery query,
fidl::InterfaceHandle<fuchsia::modular::ContextListener> listener) {
auto listener_ptr = listener.Bind();
fuchsia::modular::SubscriptionDebugInfo debug_info;
fidl::Clone(debug_, &debug_info);
repository_->AddSubscription(std::move(query), std::move(listener_ptr),
std::move(debug_info));
}
void ContextReaderImpl::Get(fuchsia::modular::ContextQuery query,
GetCallback callback) {
callback(repository_->Query(query));
}
} // namespace modular