summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/applets/applets.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/am/applets/applets.h')
-rw-r--r--src/core/hle/service/am/applets/applets.h50
1 files changed, 34 insertions, 16 deletions
diff --git a/src/core/hle/service/am/applets/applets.h b/src/core/hle/service/am/applets/applets.h
index 136445649..f65ea119c 100644
--- a/src/core/hle/service/am/applets/applets.h
+++ b/src/core/hle/service/am/applets/applets.h
@@ -4,14 +4,17 @@
#pragma once
-#include <functional>
#include <memory>
#include <queue>
#include "common/swap.h"
-#include "core/hle/kernel/event.h"
+#include "core/hle/kernel/kernel.h"
union ResultCode;
+namespace Kernel {
+class Event;
+}
+
namespace Service::AM {
class IStorage;
@@ -43,19 +46,26 @@ public:
private:
// Queues are named from applet's perspective
- std::queue<std::unique_ptr<IStorage>>
- in_channel; // PopNormalDataToApplet and PushNormalDataFromGame
- std::queue<std::unique_ptr<IStorage>>
- out_channel; // PopNormalDataToGame and PushNormalDataFromApplet
- std::queue<std::unique_ptr<IStorage>>
- in_interactive_channel; // PopInteractiveDataToApplet and PushInteractiveDataFromGame
- std::queue<std::unique_ptr<IStorage>>
- out_interactive_channel; // PopInteractiveDataToGame and PushInteractiveDataFromApplet
+
+ // PopNormalDataToApplet and PushNormalDataFromGame
+ std::queue<std::unique_ptr<IStorage>> in_channel;
+
+ // PopNormalDataToGame and PushNormalDataFromApplet
+ std::queue<std::unique_ptr<IStorage>> out_channel;
+
+ // PopInteractiveDataToApplet and PushInteractiveDataFromGame
+ std::queue<std::unique_ptr<IStorage>> in_interactive_channel;
+
+ // PopInteractiveDataToGame and PushInteractiveDataFromApplet
+ std::queue<std::unique_ptr<IStorage>> out_interactive_channel;
Kernel::SharedPtr<Kernel::Event> state_changed_event;
- Kernel::SharedPtr<Kernel::Event> pop_out_data_event; // Signaled on PushNormalDataFromApplet
- Kernel::SharedPtr<Kernel::Event>
- pop_interactive_out_data_event; // Signaled on PushInteractiveDataFromApplet
+
+ // Signaled on PushNormalDataFromApplet
+ Kernel::SharedPtr<Kernel::Event> pop_out_data_event;
+
+ // Signaled on PushInteractiveDataFromApplet
+ Kernel::SharedPtr<Kernel::Event> pop_interactive_out_data_event;
};
class Applet {
@@ -63,7 +73,7 @@ public:
Applet();
virtual ~Applet();
- virtual void Initialize(std::shared_ptr<AppletDataBroker> broker);
+ virtual void Initialize();
virtual bool TransactionComplete() const = 0;
virtual ResultCode GetStatus() const = 0;
@@ -74,6 +84,14 @@ public:
return initialized;
}
+ AppletDataBroker& GetBroker() {
+ return broker;
+ }
+
+ const AppletDataBroker& GetBroker() const {
+ return broker;
+ }
+
protected:
struct CommonArguments {
u32_le arguments_version;
@@ -85,8 +103,8 @@ protected:
};
static_assert(sizeof(CommonArguments) == 0x20, "CommonArguments has incorrect size.");
- CommonArguments common_args;
- std::shared_ptr<AppletDataBroker> broker;
+ CommonArguments common_args{};
+ AppletDataBroker broker;
bool initialized = false;
};