 0746b83edf
			
		
	
	
		0746b83edf
		
			
		
	
	
	
	
		
			
			* Rename CommandAttribute as CommandHIpcAttribute to prepare for 12.x changes * Implement inital support for TIPC and adds SM command ids * *Ipc to *ipc * Missed a ref in last commit... * CommandAttributeTIpc to CommandAttributeTipc * Addresses comment and fixes some bugs around TIPC doesn't have any padding requirements as buffer C isn't a thing Fix for RegisterService inverting two argument only on TIPC
		
			
				
	
	
		
			55 lines
		
	
	
		
			No EOL
		
	
	
		
			2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			No EOL
		
	
	
		
			2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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;
 | |
|         }
 | |
| 
 | |
|         [CommandHipc(0)]
 | |
|         // CreateFriendService() -> object<nn::friends::detail::ipc::IFriendService>
 | |
|         public ResultCode CreateFriendService(ServiceCtx context)
 | |
|         {
 | |
|             MakeObject(context, new IFriendService(_permissionLevel));
 | |
| 
 | |
|             return ResultCode.Success;
 | |
|         }
 | |
| 
 | |
|         [CommandHipc(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;
 | |
|         }
 | |
| 
 | |
|         [CommandHipc(2)] // 4.0.0+
 | |
|         // CreateDaemonSuspendSessionService() -> object<nn::friends::detail::ipc::IDaemonSuspendSessionService>
 | |
|         public ResultCode CreateDaemonSuspendSessionService(ServiceCtx context)
 | |
|         {
 | |
|             MakeObject(context, new IDaemonSuspendSessionService(_permissionLevel));
 | |
| 
 | |
|             return ResultCode.Success;
 | |
|         }
 | |
|     }
 | |
| } |