Class ServiceManager
Namespace: RealityCollective.ServiceFramework.Services
public class ServiceManager
Inheritance
object ← ServiceManager
Constructors
ServiceManager(GameObject, ServiceProvidersProfile, Type[])
Constructor Each Service Manager MUST have a managed GameObject that can route the MonoBehaviours to, if you do not provide a GameObject, then a new GlobalServiceManager will be created for you.
public ServiceManager(GameObject instanceGameObject = null, ServiceProvidersProfile profile = null, Type[] additionalBaseServiceTypes = null)
Parameters
instanceGameObject GameObject
profile ServiceProvidersProfile
additionalBaseServiceTypes Type[]
Remarks
It is NOT supported to create a reference to the ServiceManager without a GameObject and then continue to use that reference, as this will actually create two separate ServiceManagers in memory.
Fields
InitializeOnPlay
public bool InitializeOnPlay
Field Value
bool
Properties
ActivePlatforms
The list of active platforms detected by the ServiceManager.
public static IReadOnlyList<IPlatform> ActivePlatforms { get; }
Property Value
IReadOnlyList<IPlatform>
ActiveProfile
The public property of the Active Profile, ensuring events are raised on the change of the reference
public ServiceProvidersProfile ActiveProfile { get; set; }
Property Value
ActiveServices
Current active services registered with the ServiceManager.
public IReadOnlyDictionary<Type, IService> ActiveServices { get; }
Property Value
IReadOnlyDictionary<Type, IService>
Remarks
Services can only be registered once by Type and are executed in a specific priority order.
AvailablePlatforms
The list of active platforms detected by the ServiceManager.
public static IReadOnlyList<IPlatform> AvailablePlatforms { get; }
Property Value
IReadOnlyList<IPlatform>
HasActiveProfile
Checks if there is a valid instance of the Service Manager, then checks if there is there a valid Active Profile.
public bool HasActiveProfile { get; }
Property Value
bool
Instance
Returns the singleton instance of the ServiceManager.
public static ServiceManager Instance { get; }
Property Value
IsActiveAndInitialized
Gets whether there is an active Instance of the ServiceManager available and it IsInitialized.
public static bool IsActiveAndInitialized { get; }
Property Value
bool
IsApplicationQuitting
Flag stating if the application is currently attempting to quit.
public bool IsApplicationQuitting { get; }
Property Value
bool
IsInitialized
Returns whether the instance has been initialized or not.
public bool IsInitialized { get; }
Property Value
bool
ServiceInterfaceTypes
public static Type[] ServiceInterfaceTypes { get; }
Property Value
Type[]
ServiceManagerInstanceGuid
public Guid ServiceManagerInstanceGuid { get; }
Property Value
Guid
Methods
AddProcessToUpdate(UpdateMethod, float)
public void AddProcessToUpdate(UpdateMethod onUpdate, float period)
Parameters
onUpdate UpdateMethod
period float
AddServiceConfigurationForScene(string, IServiceConfiguration<IService>[])
Add a IServiceConfiguration%601 for a specific scene.
public void AddServiceConfigurationForScene(string sceneName, IServiceConfiguration<IService>[] serviceConfigurations)
Parameters
sceneName string
The scene for which to add configuration for.
serviceConfigurations IServiceConfiguration<IService>[]
The IServiceConfiguration%601 for the specific scene.
AssertIsInitialized()
Expose an assertion whether the Service Manager class is initialized.
public void AssertIsInitialized()
ConfirmInitialized()
function to determine if the ServiceManager class has been initialized or not.
public bool ConfirmInitialized()
Returns
bool
DestroyAllServices()
public void DestroyAllServices()
Dispose()
Dispose the ServiceManager object.
public void Dispose()
~ServiceManager()
protected ~ServiceManager()
GetAllServices()
Gets all IServices by type.
public List<IService> GetAllServices()
Returns
List<IService>
GetAllServices(ref List<IService>)
Gets all IServices by type.
public void GetAllServices(ref List<IService> services)
Parameters
services List<IService>
Memory reference value of the service list to update.
GetService<T>(bool)
Retrieve a IService from the ActiveServices.
public T GetService<T>(bool showLogs = true) where T : IService
Parameters
showLogs bool
Should the logs show when services cannot be found?
Returns
T
The instance of the IService that is registered.
Type Parameters
T
The interface type for the service to be retrieved.
GetService(Type, bool)
Retrieve a IService from the ActiveServices by type.
public IService GetService(Type interfaceType, bool showLogs = true)
Parameters
interfaceType Type
The interface type for the Service to be retrieved.
showLogs bool
Should the logs show when services cannot be found?
Returns
The instance of the IService that is registered.
GetServiceAsync<T>(int)
Retrieve a IService from the ActiveServices.
public Task<T> GetServiceAsync<T>(int timeout = 10) where T : IService
Parameters
timeout int
Optional, time out in seconds to wait before giving up search.
Returns
Task<T>
The instance of the IService that is registered.
Type Parameters
T
The interface type for the service to be retrieved.
GetServiceByName<T>(string, bool)
Retrieve a IService from the ActiveServices.
public IService GetServiceByName<T>(string serviceName, bool showLogs = true) where T : IService
Parameters
serviceName string
Name of the specific service.
showLogs bool
Should the logs show when services cannot be found?
Returns
The instance of the IService that is registered.
Type Parameters
T
GetServiceByName(Type, string, bool)
Retrieve a IService from the ActiveServices.
public IService GetServiceByName(Type interfaceType, string serviceName, bool showLogs = true)
Parameters
interfaceType Type
The interface type for the Service to be retrieved.
serviceName string
Name of the specific service.
showLogs bool
Should the logs show when services cannot be found?
Returns
The instance of the IService that is registered.
GetServiceCached<T>()
Retrieve a cached reference of an IService from the ActiveServices.
public T GetServiceCached<T>() where T : IService
Returns
T
The instance of the IService that is registered.
Type Parameters
T
The interface type for the Service to be retrieved.
Remarks
Internal function used for high performant services or components, not to be overused.
GetServices<T>()
Retrieve all services from the active service registry for a given type and an optional name
public List<T> GetServices<T>() where T : IService
Returns
List<T>
An array of services that meet the search criteria
Type Parameters
T
The IService interface type for the Service to be retrieved. E.G. IStorageService.
GetServices<T>(Type)
Retrieve all services from the active service registry for a given type and an optional name
public List<T> GetServices<T>(Type interfaceType) where T : IService
Parameters
interfaceType Type
The interface type for the Service to be retrieved. E.G. Storage Service.
Returns
List<T>
An array of services that meet the search criteria
Type Parameters
T
GetServices<T>(Type, string)
Retrieve all services from the active service registry for a given type and name
public List<T> GetServices<T>(Type interfaceType, string serviceName) where T : IService
Parameters
interfaceType Type
The interface type for the Service to be retrieved. Storage Service.
serviceName string
Name of the specific service
Returns
List<T>
An array of services that meet the search criteria
Type Parameters
T
GetSystemCachedAsync<T>(int)
Retrieve a IService from the ActiveSystems.
public Task<T> GetSystemCachedAsync<T>(int timeout = 10) where T : IService
Parameters
timeout int
Optional, time out in seconds to wait before giving up search.
Returns
Task<T>
The instance of the IService that is registered.
Type Parameters
T
The interface type for the Service to be retrieved.
Initialize(GameObject, ServiceProvidersProfile)
public void Initialize(GameObject instanceGameObject = null, ServiceProvidersProfile profile = null)
Parameters
instanceGameObject GameObject
profile ServiceProvidersProfile
InitializeServiceManager()
Initialize the Service Framework configured services.
public void InitializeServiceManager()
IsServiceRegistered<T>()
Query the ActiveServices for the existence of a IService.
public bool IsServiceRegistered<T>() where T : IService
Returns
bool
Returns true, if there is a IService registered, otherwise false.
Type Parameters
T
The interface type for the service to be retrieved.
IsServiceRegistered(object)
Query the ActiveServices for the existence of a IService.
public bool IsServiceRegistered(object concreteType)
Parameters
concreteType object
Returns
bool
Returns true, if there is a IService registered, otherwise false.
LoadServicesForScene(string)
Load services for a specific scene.
public void LoadServicesForScene(string sceneName)
Parameters
sceneName string
The scene for which to load the services for.
RemoveProcessFromUpdate(UpdateMethod)
Safe to call even if onUpdate was not previously Subscribed.
public void RemoveProcessFromUpdate(UpdateMethod onUpdate)
Parameters
onUpdate UpdateMethod
ResetProfile(ServiceProvidersProfile, GameObject)
When a profile is replaced with a new one, force all services to reset and read the new values
public void ResetProfile(ServiceProvidersProfile profile, GameObject instance = null)
Parameters
profile ServiceProvidersProfile
instance GameObject
TryCreateAndRegisterService<T>(IServiceConfiguration<T>, out T)
Creates a new instance of a service and registers it to the Service Manager service registry for the specified platform.
public bool TryCreateAndRegisterService<T>(IServiceConfiguration<T> configuration, out T service) where T : IService
Parameters
configuration IServiceConfiguration<T>
The IServiceConfiguration%601 to use to create and register the service.
service T
If successful, then the new IService instance will be passed back out.
Returns
bool
True, if the service was successfully created and registered.
Type Parameters
T
The interface type for the IService to be registered.
TryCreateAndRegisterService<T>(Type, out T, params object[])
Creates a new instance of a service and registers it to the Reality Toolkit service registry for all platforms.
public bool TryCreateAndRegisterService<T>(Type concreteType, out T service, params object[] args) where T : IService
Parameters
concreteType Type
The concrete class type to instantiate.
service T
If successful, then the new IService instance will be passed back out.
args object[]
Optional arguments used when instantiating the concrete type.
Returns
bool
True, if the service was successfully created and registered.
Type Parameters
T
The interface type for the IService to be registered.
TryCreateAndRegisterService<T>(Type, IReadOnlyList<IPlatform>, out T, params object[])
Creates a new instance of a service and registers it to the Reality Toolkit service registry for the specified platform(s).
public bool TryCreateAndRegisterService<T>(Type concreteType, IReadOnlyList<IPlatform> runtimePlatforms, out T service, params object[] args) where T : IService
Parameters
concreteType Type
The concrete class type to instantiate.
runtimePlatforms IReadOnlyList<IPlatform>
The runtime IPlatforms to check against when registering.
service T
If successful, then the new IService instance will be passed back out.
args object[]
Optional arguments used when instantiating the concrete type.
Returns
bool
True, if the service was successfully created and registered.
Type Parameters
T
The interface type for the IService to be registered.
TryCreateAndRegisterServiceModule<T>(IServiceConfiguration<T>, IService)
Creates a new instance of a service module and registers it to the Service Manager service registry for the specified platform.
public bool TryCreateAndRegisterServiceModule<T>(IServiceConfiguration<T> configuration, IService serviceParent) where T : IServiceModule
Parameters
configuration IServiceConfiguration<T>
The IServiceConfiguration%601 to use to create and register the service module.
serviceParent IService
The IService that the IServiceModule will be assigned to.
Returns
bool
True, if the service was successfully created and registered.
Type Parameters
T
The interface type for the IService to be registered.
TryGetService<T>(out T)
Retrieve a IService from the ActiveServices.
public bool TryGetService<T>(out T service) where T : IService
Parameters
service T
The instance of the service class that is registered.
Returns
bool
Returns true if the IService was found, otherwise false.
Type Parameters
T
The interface type for the service to be retrieved.
TryGetService(Type, out IService)
Retrieve the first IService from the ActiveServices that meets the selected type and name.
public bool TryGetService(Type interfaceType, out IService service)
Parameters
interfaceType Type
Interface type of the service being requested.
service IService
return parameter of the function.
Returns
bool
TryGetService(Type, string, out IService)
Retrieve the first IService from the ActiveServices that meets the selected type and name.
public bool TryGetService(Type interfaceType, string serviceName, out IService serviceInstance)
Parameters
interfaceType Type
Interface type of the service being requested.
serviceName string
Name of the specific service.
serviceInstance IService
return parameter of the function.
Returns
bool
TryGetService(IService, out IService)
public bool TryGetService(IService service, out IService serviceInstance)
Parameters
service IService
serviceInstance IService
Returns
bool
TryGetServiceByName<T>(string, out T)
Retrieve a IService from the ActiveServices by name.
public bool TryGetServiceByName<T>(string serviceName, out T service) where T : IService
Parameters
serviceName string
Name of the specific service to search for.
service T
The instance of the service class that is registered.
Returns
bool
Returns true if the IService was found, otherwise false.
Type Parameters
T
The interface type for the service to be retrieved.
TryGetServiceByName(Type, string, out IService)
Retrieve the first IService from the ActiveServices that meets the selected type and name.
public bool TryGetServiceByName(Type interfaceType, string serviceName, out IService serviceInstance)
Parameters
interfaceType Type
Interface type of the service being requested.
serviceName string
Name of the specific service.
serviceInstance IService
return parameter of the function.
Returns
bool
TryGetServiceCached<T>(out T)
Retrieve a IService from the ActiveSystems.
public bool TryGetServiceCached<T>(out T service) where T : IService
Parameters
service T
The instance of the Service class that is registered.
Returns
bool
Returns true if the IService was found, otherwise false.
Type Parameters
T
The interface type for the Service to be retrieved.
TryGetServiceProfile<TService, TProfile>(out TProfile, BaseServiceProfile<IService>)
Try to get the TProfile of the TService
public bool TryGetServiceProfile<TService, TProfile>(out TProfile profile, BaseServiceProfile<IService> rootProfile = null) where TService : IService where TProfile : BaseProfile
Parameters
profile TProfile
The profile instance.
rootProfile BaseServiceProfile<IService>
Optional root profile reference.
Returns
bool
True if a TService type is matched and a valid TProfile is found, otherwise false.
Type Parameters
TService
TProfile
TryGetServices<T>(Type, string, ref List<T>)
Retrieve all services from the active service registry for a given type and name
public bool TryGetServices<T>(Type interfaceType, string serviceName, ref List<T> services) where T : IService
Parameters
interfaceType Type
The interface type for the Service to be retrieved. Storage Service.
serviceName string
Name of the specific service
services List<T>
Returns
bool
An array of services that meet the search criteria
Type Parameters
T
TryRegisterService<T>(IService)
Add a service instance to the Service Manager active service registry.
public bool TryRegisterService<T>(IService serviceInstance) where T : IService
Parameters
serviceInstance IService
Instance of the IService to register.
Returns
bool
True, if the service was successfully registered.
Type Parameters
T
The interface type for the IService to be registered.
TryRegisterService(Type, IService)
Service registration.
public bool TryRegisterService(Type interfaceType, IService serviceInstance)
Parameters
interfaceType Type
The interface type for the IService to be registered.
serviceInstance IService
Instance of the IService to register.
Returns
bool
True if registration is successful, false otherwise.
TryRegisterServiceConfigurations<T>(IServiceConfiguration<T>[])
Registers all the IServices defined in the provided configuration collection.
public bool TryRegisterServiceConfigurations<T>(IServiceConfiguration<T>[] configurations) where T : IService
Parameters
configurations IServiceConfiguration<T>[]
The list of IServiceConfiguration%601s.
Returns
bool
True, if all configurations successfully created and registered their services.
Type Parameters
T
The interface type for the IService to be registered.
TryRegisterServiceModuleConfigurations<T>(IServiceConfiguration<T>[], IService)
Registers all the IServiceModules defined in the provided configuration collection.
public bool TryRegisterServiceModuleConfigurations<T>(IServiceConfiguration<T>[] configurations, IService serviceParent) where T : IServiceModule
Parameters
configurations IServiceConfiguration<T>[]
The list of IServiceConfiguration%601s.
serviceParent IService
The IService that the IServiceModule will be assigned to.
Returns
bool
True, if all configurations successfully created and registered their service modules.
Type Parameters
T
The interface type for the IServiceModule to be registered.
TryUnRegisterServiceConfigurations<T>(IServiceConfiguration<T>[])
Removed all the IServices from active the active runtime, defined in the provided configuration collection.
public bool TryUnRegisterServiceConfigurations<T>(IServiceConfiguration<T>[] configurations) where T : IService
Parameters
configurations IServiceConfiguration<T>[]
The list of IServiceConfiguration%601s.
Returns
bool
True, if all active instances have been successfully removed.
Type Parameters
T
The interface type for the IService to be removed.
TryUnregisterService<T>(T)
Removes a specific service with the provided name.
public bool TryUnregisterService<T>(T serviceInstance) where T : IService
Parameters
serviceInstance T
The instance of the IService to remove.
Returns
bool
Type Parameters
T
TryUnregisterServicesOfType<T>()
Remove all services from the Service Manager active service registry for a given type
public bool TryUnregisterServicesOfType<T>() where T : IService
Returns
bool
Type Parameters
T
UnloadServicesForScene(string)
Unload services for a specific scene.
public void UnloadServicesForScene(string sceneName)
Parameters
sceneName string
The scene for which to unload the services for.
WaitUntilInitializedAsync(float, string)
Waits for the ServiceManager to initialize until
timeout seconds have passed or IsActiveAndInitialized.
public static ValueTask WaitUntilInitializedAsync(float timeout = 10, string sceneName = null)
Parameters
timeout float
Time to wait in seconds for IsActiveAndInitialized to become true.
sceneName string
An optional scene name. If set, will wait for sceneName services to initialize as well.
Returns
ValueTask
WaitUntilInitializedAsync(float)
Waits for the ServiceManager to initialize until
timeout seconds have passed or IsActiveAndInitialized.
public static ValueTask WaitUntilInitializedAsync(float timeout)
Parameters
timeout float
Time to wait in seconds for IsActiveAndInitialized to become true.
Returns
ValueTask
WaitUntilInitializedAsync(string)
Waits for the ServiceManager to initialize until
defaultInitializationTimeout seconds have passed or IsActiveAndInitialized and all services
for sceneName are initialized.
public static ValueTask WaitUntilInitializedAsync(string sceneName)
Parameters
sceneName string
Will wait for sceneName services to initialize.
Returns
ValueTask
Initialized
The ServiceManager Instance has finished initialzing.
public static event Action<ServiceManager> Initialized
Event Type
Action<ServiceManager>