Refactoring HOS folder structure (#771)

* Refactoring HOS folder structure

Refactoring HOS folder structure:

- Added some subfolders when needed (Following structure decided in private).
- Added some `Types` folders when needed.
- Little cleanup here and there.
- Add services placeholders for every HOS services (close #766 and #753).

* Remove Types namespaces
This commit is contained in:
Ac_K 2019-09-19 02:45:11 +02:00 committed by jduncanator
parent 4af3101b22
commit a0720b5681
393 changed files with 2540 additions and 1299 deletions

View file

@ -0,0 +1,83 @@
using Ryujinx.HLE.Utilities;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
{
public sealed class NotificationEventHandler
{
private static NotificationEventHandler instance;
private static object instanceLock = new object();
private INotificationService[] _registry;
public static NotificationEventHandler Instance
{
get
{
lock (instanceLock)
{
if (instance == null)
{
instance = new NotificationEventHandler();
}
return instance;
}
}
}
NotificationEventHandler()
{
_registry = new INotificationService[0x20];
}
internal void RegisterNotificationService(INotificationService service)
{
// NOTE: in case there isn't space anymore in the registry array, Nintendo doesn't return any errors.
for (int i = 0; i < _registry.Length; i++)
{
if (_registry[i] == null)
{
_registry[i] = service;
break;
}
}
}
internal void UnregisterNotificationService(INotificationService service)
{
// NOTE: in case there isn't the entry in the registry array, Nintendo doesn't return any errors.
for (int i = 0; i < _registry.Length; i++)
{
if (_registry[i] == service)
{
_registry[i] = null;
break;
}
}
}
// TODO: Use this when we will have enough things to go online.
public void SignalFriendListUpdate(UInt128 targetId)
{
for (int i = 0; i < _registry.Length; i++)
{
if (_registry[i] != null)
{
_registry[i].SignalFriendListUpdate(targetId);
}
}
}
// TODO: Use this when we will have enough things to go online.
public void SignalNewFriendRequest(UInt128 targetId)
{
for (int i = 0; i < _registry.Length; i++)
{
if (_registry[i] != null)
{
_registry[i].SignalNewFriendRequest(targetId);
}
}
}
}
}

View file

@ -0,0 +1,9 @@
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
{
enum NotificationEventType : uint
{
Invalid = 0x0,
FriendListUpdate = 0x1,
NewFriendRequest = 0x65
}
}

View file

@ -0,0 +1,15 @@
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
{
[StructLayout(LayoutKind.Sequential, Pack = 0x8, Size = 0x10)]
struct NotificationInfo
{
public NotificationEventType Type;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x4)]
public char[] Padding;
public long NetworkUserIdPlaceholder;
}
}