#ifndef BASE_FUCHSIA_STARTUP_CONTEXT_H_
#define BASE_FUCHSIA_STARTUP_CONTEXT_H_
#include <fuchsia/component/runner/cpp/fidl.h>
#include <fuchsia/io/cpp/fidl.h>
#include <lib/sys/cpp/component_context.h>
#include <lib/zx/channel.h>
#include <memory>
#include "base/base_export.h"
namespace sys {
class ServiceDirectory;
class OutgoingDirectory;
}
namespace base {
class BASE_EXPORT StartupContext final {
public:
explicit StartupContext(
::fuchsia::component::runner::ComponentStartInfo start_info);
~StartupContext();
StartupContext(const StartupContext&) = delete;
StartupContext& operator=(const StartupContext&) = delete;
sys::ComponentContext* component_context() const {
return component_context_.get();
}
const sys::ServiceDirectory* svc() const {
return component_context_->svc().get();
}
sys::OutgoingDirectory* outgoing() const {
return component_context_->outgoing().get();
}
void ServeOutgoingDirectory();
bool has_outgoing_directory_request() {
return outgoing_directory_request_.is_valid();
}
private:
std::unique_ptr<sys::ComponentContext> component_context_;
fidl::InterfaceRequest<fuchsia::io::Directory> outgoing_directory_request_;
};
}
#endif