Files
UnrealEngine/Engine/Source/Developer/ProfilerClient/Public/IProfilerClient.h
2025-05-18 13:04:45 +08:00

170 lines
5.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Misc/Guid.h"
struct FProfilerDataFrame;
struct FStatMetaData;
/** Delegate for passing profiler data to UI */
DECLARE_MULTICAST_DELEGATE_TwoParams(FProfilerClientDataDelegate, const FGuid&, const FProfilerDataFrame&);
/** Delegate for alerting UI a session has been established */
DECLARE_MULTICAST_DELEGATE_TwoParams(FProfilerClientConnectedDelegate, const FGuid&, const FGuid&);
/** Delegate for alerting UI a session has been disconnected */
DECLARE_MULTICAST_DELEGATE_TwoParams(FProfilerClientDisconnectedDelegate, const FGuid&, const FGuid&);
/** Delegate for alerting subscribers the meta data has been updated */
DECLARE_MULTICAST_DELEGATE_TwoParams(FProfilerMetaDataUpdateDelegate, const FGuid&, const FStatMetaData&);
/** Delegate for alerting clients a load has started */
DECLARE_MULTICAST_DELEGATE_OneParam(FProfilerLoadStartedDelegate, const FGuid&);
/** Delegate for alerting clients a load has completed */
DECLARE_MULTICAST_DELEGATE_OneParam(FProfilerLoadCompletedDelegate, const FGuid&);
/** Delegate for alerting clients a load was cancelled */
DECLARE_MULTICAST_DELEGATE_OneParam(FProfilerLoadCancelledDelegate, const FGuid&);
/** Delegate for alerting clients a load has loaded meta data */
DECLARE_MULTICAST_DELEGATE_OneParam(FProfilerLoadedMetaDataDelegate, const FGuid&);
/** Delegate for updating the current progress of file transfer. */
DECLARE_MULTICAST_DELEGATE_ThreeParams(FProfilerFileTransferDelegate, const FString& /*Filename*/, int64 /*FileProgress*/, int64 /*FileSize*/);
/**
* Interface for Profiler Client.
*/
class IProfilerClient
{
public:
/**
* Subscribe to the given profiler session id
*
* @param Session The session to subscribe to for profiler data
*/
virtual void Subscribe(const FGuid& Session) = 0;
/**
*
*/
virtual void Track(const FGuid& Instance) = 0;
/**
*
*/
virtual void Untrack(const FGuid& Instance) = 0;
/** Unsubscribe from all sessions. */
virtual void Unsubscribe() = 0;
/**
* Changes the current state of the capturing data service-side.
*
* @param bRequestedCaptureState Data capture state that should be set.
* @param InstanceId If valid, this function will be executed only for the specified instance, otherwise will be executed on all instances.
*
*/
virtual void SetCaptureState(const bool bRequestedCaptureState, const FGuid& InstanceId = FGuid()) = 0;
/**
* Changes the current state of the previewing capture data.
*
* @param bRequestedCaptureState Data preview state that should be set.
* @param InstanceId If valid, this function will be executed only for the specified instance, otherwise will be executed on all instances.
*
*/
virtual void SetPreviewState(const bool bRequestedPreviewState, const FGuid& InstanceId = FGuid()) = 0;
/**
* Loads a Capture file
*/
virtual void LoadCapture(const FString& DataFilepath, const FGuid& ProfileId) = 0;
/**
* Cancels a capture file load that is in progress
*/
virtual void CancelLoading(const FGuid InstanceId) = 0;
/**
* Requests the last captured file from the service.
*
* @param InstanceId If valid, this function will be executed only for the specified instance, otherwise will be executed on all instances
*/
virtual void RequestLastCapturedFile(const FGuid& InstanceId = FGuid()) = 0;
/**
* Gets the description for the given stat id
*
* @param StatId The identifier of the statistic description to retrieve.
* @return the FStatMetaData struct with the description.
*/
virtual const FStatMetaData& GetStatMetaData(const FGuid& InstanceId) const = 0;
/**
* Retrieves the profiler data delegate.
*
* @return profiler data delegate.
*/
virtual FProfilerClientDataDelegate& OnProfilerData() = 0;
/**
* Retrieves the profiler file transfer delegate.
*
* @return profiler file transfer delegate.
*/
virtual FProfilerFileTransferDelegate& OnProfilerFileTransfer() = 0;
/**
* Retrieves the profiler client connected delegate.
*
* @return profiler client connected delegate.
*/
virtual FProfilerClientConnectedDelegate& OnProfilerClientConnected() = 0;
/**
* Retrieves the profiler client disconnected delegate.
*
* @return profiler client disconnected delegate.
*/
virtual FProfilerClientDisconnectedDelegate& OnProfilerClientDisconnected() = 0;
/**
* Retrieves the profiler meta data update delegate.
*
* @return profiler meta data delegate.
*/
virtual FProfilerMetaDataUpdateDelegate& OnMetaDataUpdated() = 0;
/**
* Retrieves the load started delegate.
*
* @return profiler load start delegate.
*/
virtual FProfilerLoadStartedDelegate& OnLoadStarted() = 0;
/**
* Retrieves the load completed delegate.
*
* @return profiler load completed delegate.
*/
virtual FProfilerLoadCompletedDelegate& OnLoadCompleted() = 0;
/**
* Retrieves the load cancelled delegate.
*
* @return profiler load cancelled delegate.
*/
virtual FProfilerLoadCancelledDelegate& OnLoadCancelled() = 0;
protected:
/** Virtual destructor. */
virtual ~IProfilerClient() { }
};