blob: f07d99aea446690b4fecd44222ccc48d0f060da5 [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.
#ifndef PERIDOT_BIN_CONTEXT_ENGINE_CONTEXT_ENGINE_IMPL_H_
#define PERIDOT_BIN_CONTEXT_ENGINE_CONTEXT_ENGINE_IMPL_H_
#include <fuchsia/modular/cpp/fidl.h>
#include <lib/fidl/cpp/binding_set.h>
#include "peridot/bin/context_engine/context_repository.h"
#include "peridot/bin/context_engine/debug.h"
namespace modular {
class EntityResolver;
class ContextReaderImpl;
class ContextWriterImpl;
class ContextEngineImpl : fuchsia::modular::ContextEngine {
public:
// Does not take ownership of |entity_resolver|.
ContextEngineImpl(fuchsia::modular::EntityResolver* entity_resolver);
~ContextEngineImpl() override;
void AddBinding(
fidl::InterfaceRequest<fuchsia::modular::ContextEngine> request);
fxl::WeakPtr<ContextDebugImpl> debug();
private:
// |fuchsia::modular::ContextEngine|
void GetWriter(
fuchsia::modular::ComponentScope client_info,
fidl::InterfaceRequest<fuchsia::modular::ContextWriter> request) override;
// |fuchsia::modular::ContextEngine|
void GetReader(
fuchsia::modular::ComponentScope client_info,
fidl::InterfaceRequest<fuchsia::modular::ContextReader> request) override;
// |fuchsia::modular::ContextEngine|
void GetContextDebug(
fidl::InterfaceRequest<fuchsia::modular::ContextDebug> request) override;
fuchsia::modular::EntityResolver* const entity_resolver_;
ContextRepository repository_;
fidl::BindingSet<fuchsia::modular::ContextEngine> bindings_;
std::vector<std::unique_ptr<ContextReaderImpl>> readers_;
std::vector<std::unique_ptr<ContextWriterImpl>> writers_;
FXL_DISALLOW_COPY_AND_ASSIGN(ContextEngineImpl);
};
} // namespace modular
#endif // PERIDOT_BIN_CONTEXT_ENGINE_CONTEXT_ENGINE_IMPL_H_