blob: 4eeb724346c1f3f849bb582903eb94a573b4b394 [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_SESSIONMGR_ENTITY_PROVIDER_RUNNER_ENTITY_PROVIDER_LAUNCHER_H_
#define PERIDOT_BIN_SESSIONMGR_ENTITY_PROVIDER_RUNNER_ENTITY_PROVIDER_LAUNCHER_H_
#include <string>
#include <fuchsia/modular/cpp/fidl.h>
#include <lib/fidl/cpp/interface_request.h>
#include <lib/fxl/macros.h>
namespace modular {
// An interface for launching EntityProviders. This interface helps break the
// dependency cycle between |AgentRunner| and |EntityProviderRunner|.
class EntityProviderLauncher {
public:
// Connects to the entity provider service of the agent at the specified
// |agent_url|.
//
// |agent_controller_request| is used to keep the agent running. Once dropped,
// the agent may be killed and the entity provider will thus be dropped.
virtual void ConnectToEntityProvider(
const std::string& provider_uri,
fidl::InterfaceRequest<fuchsia::modular::EntityProvider>
entity_provider_request,
fidl::InterfaceRequest<fuchsia::modular::AgentController>
agent_controller_request) = 0;
// Connets to the entity provider service for the story with the given
// |story_id|.
//
// If no such story is found, the request is dropped.
virtual void ConnectToStoryEntityProvider(
const std::string& provider_uri,
fidl::InterfaceRequest<fuchsia::modular::EntityProvider>
entity_provider_request) = 0;
protected:
virtual ~EntityProviderLauncher();
};
} // namespace modular
#endif // PERIDOT_BIN_SESSIONMGR_ENTITY_PROVIDER_RUNNER_ENTITY_PROVIDER_LAUNCHER_H_