| // 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 |