Namespace Snowflake.Services
Interfaces
IContentDirectoryProvider
Provides the application content directory.
Often this is unneeded. Prefer the Snowflake Snowflake.Filesystem API if possible. If you are writing a provisioned IPlugin, a working directory has already been provided to you through the Filesystem API through IPluginProvision.
If you are writing a service, you may also be interested in the Zio.IFileSystem service for safer filesystem access.
IDeviceEnumerator
Enumerates input devices and produces IInputDevice for each enumerated hardware device, alongside their supported device.
There is only one IDeviceEnumerator service per instance, which is unique to the OS, and must enumerate all devices and their input drivers (API) for that operating system.
All IDeviceEnumerator must provide a keyboard device that implements the driver instance for Keyboard and a passthrough device that implements the Passthrough driver instance at a minimum, otherwise emulators will be unable to map inputs.
ILogProvider
Provides logging services
IPluginManager
The IPluginManager manages all plugins.
IServiceEnumerator
Enumerates all available services.
IServiceRegistrationProvider
Provides facilities to register a service.
A service must implement an interface that resides outside of its implementing assembly. A service that implements an interface in its own assembly will not be accessible by any consumer due to resolution rules. This is true even for a service that only exposes a private API. In such case, it is advisable to expose an internal API, and use System.Runtime.CompilerServices.InternalsVisibleToAttribute to expose the interface.
IStoneProvider
Provides Stone platform and controller layout data