mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-13 06:32:02 +00:00
ea14a95524
* Fix inconsistencies with UserId The account user id isn't an UUID. This PR adds a new UserId type with the correct value ordering to avoid mismatch with LibHac's Uid. This also fix an hardcoded value of the UserId. As the userid has been invalid for quite some time (and to avoid forcing users to their recreate saves), the userid has been changed to "00000000000000010000000000000000". Also implement a stub for IApplicationFunctions::GetSaveDataSize. (see the sources for the reason) Fix #626 * Address jd's & Ac_k's comments
56 lines
No EOL
2 KiB
C#
56 lines
No EOL
2 KiB
C#
using Ryujinx.Common;
|
|
using Ryujinx.HLE.HOS.Services.Account.Acc;
|
|
using Ryujinx.HLE.HOS.Services.Friend.ServiceCreator;
|
|
using Ryujinx.HLE.Utilities;
|
|
|
|
namespace Ryujinx.HLE.HOS.Services.Friend
|
|
{
|
|
[Service("friend:a", FriendServicePermissionLevel.Admin)]
|
|
[Service("friend:m", FriendServicePermissionLevel.Manager)]
|
|
[Service("friend:s", FriendServicePermissionLevel.System)]
|
|
[Service("friend:u", FriendServicePermissionLevel.User)]
|
|
[Service("friend:v", FriendServicePermissionLevel.Overlay)]
|
|
class IServiceCreator : IpcService
|
|
{
|
|
private FriendServicePermissionLevel _permissionLevel;
|
|
|
|
public IServiceCreator(ServiceCtx context, FriendServicePermissionLevel permissionLevel)
|
|
{
|
|
_permissionLevel = permissionLevel;
|
|
}
|
|
|
|
[Command(0)]
|
|
// CreateFriendService() -> object<nn::friends::detail::ipc::IFriendService>
|
|
public ResultCode CreateFriendService(ServiceCtx context)
|
|
{
|
|
MakeObject(context, new IFriendService(_permissionLevel));
|
|
|
|
return ResultCode.Success;
|
|
}
|
|
|
|
[Command(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;
|
|
}
|
|
|
|
[Command(2)] // 4.0.0+
|
|
// CreateDaemonSuspendSessionService() -> object<nn::friends::detail::ipc::IDaemonSuspendSessionService>
|
|
public ResultCode CreateDaemonSuspendSessionService(ServiceCtx context)
|
|
{
|
|
MakeObject(context, new IDaemonSuspendSessionService(_permissionLevel));
|
|
|
|
return ResultCode.Success;
|
|
}
|
|
}
|
|
} |