// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" namespace Service::AM { class AppletDataBroker; struct Applet; class IStorage; class ILibraryAppletAccessor final : public ServiceFramework { public: explicit ILibraryAppletAccessor(Core::System& system_, std::shared_ptr broker, std::shared_ptr applet); ~ILibraryAppletAccessor(); private: Result GetAppletStateChangedEvent(OutCopyHandle out_event); Result IsCompleted(Out out_is_completed); Result GetResult(Out out_result); Result PresetLibraryAppletGpuTimeSliceZero(); Result Start(); Result RequestExit(); Result Terminate(); Result PushInData(SharedPointer storage); Result PopOutData(Out> out_storage); Result PushInteractiveInData(SharedPointer storage); Result PopInteractiveOutData(Out> out_storage); Result GetPopOutDataEvent(OutCopyHandle out_event); Result GetPopInteractiveOutDataEvent(OutCopyHandle out_event); Result GetIndirectLayerConsumerHandle(Out out_handle); void FrontendExecute(); void FrontendExecuteInteractive(); void FrontendRequestExit(); const std::shared_ptr m_broker; const std::shared_ptr m_applet; }; } // namespace Service::AM