You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
136 lines
3.5 KiB
C++
136 lines
3.5 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
|
|
/**
|
|
* Implements a target device service manager.
|
|
*
|
|
* Services that were running at the
|
|
*/
|
|
class FTargetDeviceServiceManager
|
|
: public ITargetDeviceServiceManager
|
|
{
|
|
public:
|
|
|
|
/** Default constructor. */
|
|
FTargetDeviceServiceManager();
|
|
|
|
/** Destructor. */
|
|
~FTargetDeviceServiceManager();
|
|
|
|
public:
|
|
|
|
// ITargetDeviceServiceManager interface
|
|
|
|
virtual bool AddStartupService(const FString& DeviceName) override;
|
|
virtual int32 GetServices(TArray<ITargetDeviceServicePtr>& OutServices) override;
|
|
|
|
DECLARE_DERIVED_EVENT(FTargetDeviceServiceManager, ITargetDeviceServiceManager::FOnTargetDeviceServiceAdded, FOnTargetDeviceServiceAdded);
|
|
virtual FOnTargetDeviceServiceAdded& OnServiceAdded() override
|
|
{
|
|
return ServiceAddedDelegate;
|
|
}
|
|
|
|
DECLARE_DERIVED_EVENT(FTargetDeviceServiceManager, ITargetDeviceServiceManager::FOnTargetDeviceServiceRemoved, FOnTargetDeviceServiceRemoved);
|
|
virtual FOnTargetDeviceServiceRemoved& OnServiceRemoved() override
|
|
{
|
|
return ServiceRemovedDelegate;
|
|
}
|
|
|
|
virtual void RemoveStartupService(const FString& DeviceName) override;
|
|
|
|
protected:
|
|
|
|
/**
|
|
* Adds a device service for the given device.
|
|
*
|
|
* @param DeviceName The name to of the device to add.
|
|
* @return the created or preexisting service, nullptr if creation failed.
|
|
*/
|
|
ITargetDeviceServicePtr AddService(const FString& DeviceName);
|
|
|
|
/**
|
|
* Adds a target device, a device service will be created if needed.
|
|
*
|
|
* @param InDevice The target device to add
|
|
* @return true if the device was added to the device service, false if the service failed to create.
|
|
*/
|
|
bool AddTargetDevice(ITargetDevicePtr InDevice);
|
|
|
|
/**
|
|
* Initializes target platforms callbacks.
|
|
*
|
|
* @see ShutdownTargetPlatforms
|
|
*/
|
|
void InitializeTargetPlatforms();
|
|
|
|
/**
|
|
* Loads all settings from disk.
|
|
*
|
|
* @see SaveSettings
|
|
*/
|
|
void LoadSettings();
|
|
|
|
/**
|
|
* Removes the device service for the given target device.
|
|
*
|
|
* @param DeviceName The name of the device to remove the service for.
|
|
*/
|
|
void RemoveService(const FString& DeviceName);
|
|
|
|
/**
|
|
* Removes the given target device, if that is the last target device in the device service the entire service is removed.
|
|
*
|
|
* @param InDevice The target device to remove.
|
|
*/
|
|
void RemoveTargetDevice(ITargetDevicePtr InDevice);
|
|
|
|
/**
|
|
* Saves all settings to disk.
|
|
*
|
|
* @see LoadSettings
|
|
*/
|
|
void SaveSettings();
|
|
|
|
/**
|
|
* Shuts down target platforms callbacks.
|
|
*
|
|
* @see InitializeTargetPlatforms
|
|
*/
|
|
void ShutdownTargetPlatforms();
|
|
|
|
private:
|
|
|
|
/** Callback for handling message bus shutdowns. */
|
|
void HandleMessageBusShutdown();
|
|
|
|
/** Callback for discovered target devices. */
|
|
void HandleTargetPlatformDeviceDiscovered(ITargetDeviceRef DiscoveredDevice);
|
|
|
|
/** Callback for lost target devices. */
|
|
void HandleTargetPlatformDeviceLost(ITargetDeviceRef LostDevice);
|
|
|
|
private:
|
|
|
|
/** Holds a critical section object. */
|
|
FCriticalSection CriticalSection;
|
|
|
|
/** Holds the list of locally managed device services. */
|
|
TMap<FString, ITargetDeviceServicePtr> DeviceServices;
|
|
|
|
/** Holds a weak pointer to the message bus. */
|
|
IMessageBusWeakPtr MessageBusPtr;
|
|
|
|
/** Holds the collection of identifiers for devices that start automatically (shared/unshared). */
|
|
TMap<FString, bool> StartupServices;
|
|
|
|
private:
|
|
|
|
/** Holds a delegate that is invoked when a target device service was added. */
|
|
FOnTargetDeviceServiceAdded ServiceAddedDelegate;
|
|
|
|
/** Holds a delegate that is invoked when a target device service was removed. */
|
|
FOnTargetDeviceServiceRemoved ServiceRemovedDelegate;
|
|
};
|