diff options
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Friend/IServiceCreator.cs')
| -rw-r--r-- | src/Ryujinx.HLE/HOS/Services/Friend/IServiceCreator.cs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/IServiceCreator.cs b/src/Ryujinx.HLE/HOS/Services/Friend/IServiceCreator.cs new file mode 100644 index 00000000..d5258a82 --- /dev/null +++ b/src/Ryujinx.HLE/HOS/Services/Friend/IServiceCreator.cs @@ -0,0 +1,55 @@ +using Ryujinx.Common; +using Ryujinx.HLE.HOS.Services.Account.Acc; +using Ryujinx.HLE.HOS.Services.Friend.ServiceCreator; + +namespace Ryujinx.HLE.HOS.Services.Friend +{ + [Service("friend:a", FriendServicePermissionLevel.Administrator)] + [Service("friend:m", FriendServicePermissionLevel.Manager)] + [Service("friend:s", FriendServicePermissionLevel.System)] + [Service("friend:u", FriendServicePermissionLevel.User)] + [Service("friend:v", FriendServicePermissionLevel.Viewer)] + class IServiceCreator : IpcService + { + private FriendServicePermissionLevel _permissionLevel; + + public IServiceCreator(ServiceCtx context, FriendServicePermissionLevel permissionLevel) + { + _permissionLevel = permissionLevel; + } + + [CommandCmif(0)] + // CreateFriendService() -> object<nn::friends::detail::ipc::IFriendService> + public ResultCode CreateFriendService(ServiceCtx context) + { + MakeObject(context, new IFriendService(_permissionLevel)); + + return ResultCode.Success; + } + + [CommandCmif(1)] // 2.0.0+ + // CreateNotificationService(nn::account::Uid userId) -> object<nn::friends::detail::ipc::INotificationService> + public ResultCode CreateNotificationService(ServiceCtx context) + { + UserId userId = context.RequestData.ReadStruct<UserId>(); + + if (userId.IsNull) + { + return ResultCode.InvalidArgument; + } + + MakeObject(context, new INotificationService(context, userId, _permissionLevel)); + + return ResultCode.Success; + } + + [CommandCmif(2)] // 4.0.0+ + // CreateDaemonSuspendSessionService() -> object<nn::friends::detail::ipc::IDaemonSuspendSessionService> + public ResultCode CreateDaemonSuspendSessionService(ServiceCtx context) + { + MakeObject(context, new IDaemonSuspendSessionService(_permissionLevel)); + + return ResultCode.Success; + } + } +}
\ No newline at end of file |
