16#include "LocalFileNetworkReplayStreaming.generated.h"
209 int64 ArchivePos = 0;
231 DeletingFinishedStream,
232 RefreshingLiveStream,
235 RenameReplayFriendlyName,
238 inline const TCHAR* ToString( EQueuedLocalFileRequestType::Type Type )
243 return TEXT(
"StartRecording" );
245 return TEXT(
"WriteHeader" );
247 return TEXT(
"WritingHeader" );
249 return TEXT(
"WritingStream" );
251 return TEXT(
"StopRecording" );
253 return TEXT(
"StartPlayback" );
255 return TEXT(
"ReadingHeader" );
257 return TEXT(
"ReadingStream" );
258 case EnumeratingStreams:
259 return TEXT(
"EnumeratingStreams" );
260 case WritingCheckpoint:
261 return TEXT(
"WritingCheckpoint" );
262 case ReadingCheckpoint:
263 return TEXT(
"ReadingCheckpoint" );
265 return TEXT(
"UpdatingEvent" );
266 case EnumeratingEvents:
267 return TEXT(
"EnumeratingEvents" );
268 case RequestingEvent:
269 return TEXT(
"RequestingEvent");
271 return TEXT(
"StopStreaming" );
272 case DeletingFinishedStream:
273 return TEXT(
"DeletingFinishedStream" );
274 case RefreshingLiveStream:
275 return TEXT(
"RefreshingLiveStream" );
277 return TEXT(
"KeepReplay" );
279 return TEXT(
"RenameReplay" );
280 case RenameReplayFriendlyName:
281 return TEXT(
"RenameReplayFriendlyName" );
284 return TEXT(
"Unknown EQueuedLocalFileRequestType type." );
346 void CancelRequest();
364 virtual void IssueRequest()
override;
365 virtual void FinishRequest()
override;
372template<
typename ResultType>
400 return Promise.GetFuture();
408template <
typename StorageType>
433 AsyncTask(ENamedThreads::GameThread, [SharedRef]()
435 SharedRef->FinishRequest();
443 if (!bCancelled && this->Streamer.IsValid())
445 if (CompletionCallback)
447 CompletionCallback(Storage);
450 this->Streamer->OnFileRequestComplete(this->AsShared());
461template <
typename DelegateResultType>
472 UE_DEPRECATED(5.1, "
No longer used")
557 virtual FString
GetReplayID()
const override {
return CurrentStreamName; }
583 if (CurrentStreamName.IsEmpty())
611 template <
typename StorageType>
617 template<
typename DelegateResultType>
623 template<
typename DelegateType,
typename DelegateResultType>
629 Delegate.ExecuteIfBound(Storage.DelegateResult);
633 template<
typename DelegateResultType>
691 void SetLastError(FLocalFileReplayResult&& Result);
708 FString FileFriendlyName;
785 UE_DEPRECATED(5.2,
"No longer used, replaced with custom version.")
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
void SetPromise(TPromise< ResultType > &Promise, CallableType &&Callable)
Definition Async.h:61
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define RETURN_QUICK_DECLARE_CYCLE_STAT(StatId, GroupId)
Definition Stats.h:655
TSharedRef< InObjectType, InMode > MakeShared(InArgTypes &&... Args)
Definition SharedPointer.h:2009
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ELocalFileReplayResult
Definition LocalFileNetworkReplayStreaming.h:290
@ CompressionNotSupported
@ StreamChunkIndexMismatch
EReadReplayInfoFlags
Definition LocalFileNetworkReplayStreaming.h:57
ELocalFileChunkType
Definition LocalFileNetworkReplayStreaming.h:48
EUpdateReplayInfoFlags
Definition LocalFileNetworkReplayStreaming.h:65
LOCALFILENETWORKREPLAYSTREAMING_API const TCHAR * LexToString(ELocalFileReplayResult Enum)
Definition LocalFileNetworkReplayStreaming.cpp:3720
#define DECLARE_NETRESULT_ENUM(EnumType)
Definition NetResult.h:469
EStreamingOperationResult
Definition NetworkReplayStreaming.h:197
@ Unspecified
The operation failed due to reaching a predefined replay limit.
EReplayCheckpointType
Definition NetworkReplayStreaming.h:482
EReplayStreamerState
Definition NetworkReplayStreaming.h:498
FString GetAutomaticDemoName()
Definition NullNetworkReplayStreaming.cpp:146
#define UENUM(...)
Definition ObjectMacros.h:749
ETickableTickType
Definition Tickable.h:20
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
Definition LocalFileNetworkReplayStreaming.h:310
TArray< uint8 > RequestData
Definition LocalFileNetworkReplayStreaming.h:324
FCachedFileRequest(TArray< uint8 > &&InRequestData, const double InLastAccessTime)
Definition LocalFileNetworkReplayStreaming.h:318
double LastAccessTime
Definition LocalFileNetworkReplayStreaming.h:325
FCachedFileRequest(const TArray< uint8 > &InRequestData, const double InLastAccessTime)
Definition LocalFileNetworkReplayStreaming.h:312
Definition CustomVersion.h:111
Definition LocalFileNetworkReplayStreaming.h:355
FGenericQueuedLocalFileRequest(const TSharedPtr< FLocalFileNetworkReplayStreamer > &InStreamer, EQueuedLocalFileRequestType::Type InType, TFunction< void()> &&InFunction, TFunction< void()> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:357
TFunction< void()> RequestFunction
Definition LocalFileNetworkReplayStreaming.h:368
TFunction< void()> CompletionCallback
Definition LocalFileNetworkReplayStreaming.h:369
Definition LocalFileNetworkReplayStreaming.h:509
double LastRefreshTime
Definition LocalFileNetworkReplayStreaming.h:670
FString CurrentStreamName
Definition LocalFileNetworkReplayStreaming.h:760
TArray< TSharedPtr< FQueuedLocalFileRequest, ESPMode::ThreadSafe > > QueuedRequests
Definition LocalFileNetworkReplayStreaming.h:675
static LOCALFILENETWORKREPLAYSTREAMING_API FOnLocalFileReplayFinishedWriting OnReplayFinishedWriting
Definition LocalFileNetworkReplayStreaming.h:645
virtual uint32 GetTotalDemoTime() const override
Definition LocalFileNetworkReplayStreaming.h:528
virtual bool SupportsCompression() const
Definition LocalFileNetworkReplayStreaming.h:565
virtual EStreamingOperationResult GetDemoPath(FString &DemoPath) const override
Definition LocalFileNetworkReplayStreaming.h:594
virtual FString GetReplayID() const override
Definition LocalFileNetworkReplayStreaming.h:557
virtual TArrayView< const FString > GetAdditionalRelativeDemoPaths() const
Definition LocalFileNetworkReplayStreaming.h:739
uint32 HighPriorityEndTime
Definition LocalFileNetworkReplayStreaming.h:672
virtual bool SupportsEncryption() const
Definition LocalFileNetworkReplayStreaming.h:570
FLocalFileStreamFArchive HeaderAr
Definition LocalFileNetworkReplayStreaming.h:748
void AddSimpleRequestToQueue(EQueuedLocalFileRequestType::Type RequestType, TFunction< void()> &&InFunction, TFunction< void()> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:606
virtual bool EncryptBuffer(TArrayView< const uint8 > Plaintext, TArray< uint8 > &Ciphertext, TArrayView< const uint8 > EncryptionKey) const
Definition LocalFileNetworkReplayStreaming.h:572
TMap< int32, TSharedPtr< FCachedFileRequest > > RequestCache
Definition LocalFileNetworkReplayStreaming.h:640
virtual EStreamingOperationResult SetDemoPath(const FString &DemoPath) override
Definition LocalFileNetworkReplayStreaming.h:581
virtual bool CompressBuffer(const TArray< uint8 > &InBuffer, TArray< uint8 > &OutCompressed) const
Definition LocalFileNetworkReplayStreaming.h:568
bool bStopStreamingCalled
Definition LocalFileNetworkReplayStreaming.h:671
static LOCALFILENETWORKREPLAYSTREAMING_API const uint32 MaxFriendlyNameLen
Definition LocalFileNetworkReplayStreaming.h:783
int64 StreamDataOffset
Definition LocalFileNetworkReplayStreaming.h:666
virtual void SetTimeBufferHintSeconds(const float InTimeBufferHintSeconds) override
Definition LocalFileNetworkReplayStreaming.h:559
void AddCachedFileRequestToQueue(EQueuedLocalFileRequestType::Type RequestType, int32 InCacheKey, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InFunction, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:634
double LastChunkTime
Definition LocalFileNetworkReplayStreaming.h:669
virtual void GenerateEncryptionKey(TArray< uint8 > &EncryptionKey)
Definition LocalFileNetworkReplayStreaming.h:571
virtual EReplayStreamerState GetReplayStreamerState() const override
Definition LocalFileNetworkReplayStreaming.h:558
EReplayStreamerState StreamerState
Definition LocalFileNetworkReplayStreaming.h:757
virtual bool DecryptBuffer(TArrayView< const uint8 > Ciphertext, TArray< uint8 > &Plaintext, TArrayView< const uint8 > EncryptionKey) const
Definition LocalFileNetworkReplayStreaming.h:573
TMap< FString, TArray< uint8 > > FileContentsCache
Definition LocalFileNetworkReplayStreaming.h:769
FLocalFileStreamFArchive StreamAr
Definition LocalFileNetworkReplayStreaming.h:751
FLocalFileReplayInfo CurrentReplayInfo
Definition LocalFileNetworkReplayStreaming.h:663
int64 LastGotoTimeInMS
Definition LocalFileNetworkReplayStreaming.h:673
static LOCALFILENETWORKREPLAYSTREAMING_API const uint32 FileMagic
Definition LocalFileNetworkReplayStreaming.h:782
void AddDelegateFileRequestToQueue(EQueuedLocalFileRequestType::Type RequestType, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InFunction, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:618
void AddGenericRequestToQueue(EQueuedLocalFileRequestType::Type RequestType, TFunction< void(StorageType &)> &&InFunction, TFunction< void(StorageType &)> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:612
TInterval< uint32 > StreamTimeRange
Definition LocalFileNetworkReplayStreaming.h:665
TMap< int32, TSharedPtr< FCachedFileRequest > > DeltaCheckpointCache
Definition LocalFileNetworkReplayStreaming.h:643
FString DemoSavePath
Definition LocalFileNetworkReplayStreaming.h:762
TSharedPtr< FQueuedLocalFileRequest, ESPMode::ThreadSafe > ActiveRequest
Definition LocalFileNetworkReplayStreaming.h:676
FLocalFileStreamFArchive CheckpointAr
Definition LocalFileNetworkReplayStreaming.h:754
virtual void UpdatePlaybackTime(uint32 TimeInMS) override
Definition LocalFileNetworkReplayStreaming.h:527
virtual bool DecompressBuffer(const TArray< uint8 > &InCompressed, TArray< uint8 > &OutBuffer) const
Definition LocalFileNetworkReplayStreaming.h:567
int32 StreamChunkIndex
Definition LocalFileNetworkReplayStreaming.h:668
bool bCacheFileReadsInMemory
Definition LocalFileNetworkReplayStreaming.h:768
void AddDelegateFileRequestToQueue(EQueuedLocalFileRequestType::Type RequestType, const DelegateType &Delegate, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InFunction)
Definition LocalFileNetworkReplayStreaming.h:624
Definition LocalFileNetworkReplayStreaming.h:794
bool IsTickableWhenPaused() const override
Definition LocalFileNetworkReplayStreaming.h:806
TArray< TSharedPtr< FLocalFileNetworkReplayStreamer > > LocalFileStreamers
Definition LocalFileNetworkReplayStreaming.h:811
virtual ETickableTickType GetTickableTickType() const override
Definition LocalFileNetworkReplayStreaming.h:804
Definition LocalFileNetworkReplayStreaming.h:176
FLocalFileStreamFArchive(const FLocalFileStreamFArchive &)=default
TArray< uint8 > Buffer
Definition LocalFileNetworkReplayStreaming.h:203
virtual LOCALFILENETWORKREPLAYSTREAMING_API int64 TotalSize() override
Definition LocalFileNetworkReplayStreaming.cpp:179
int32 Pos
Definition LocalFileNetworkReplayStreaming.h:205
bool bAtEndOfReplay
Definition LocalFileNetworkReplayStreaming.h:206
void Reset()
Definition LocalFileNetworkReplayStreaming.h:193
FLocalFileStreamFArchive & operator=(const FLocalFileStreamFArchive &)=default
virtual LOCALFILENETWORKREPLAYSTREAMING_API bool AtEnd() override
Definition LocalFileNetworkReplayStreaming.cpp:191
PRAGMA_DISABLE_DEPRECATION_WARNINGS FLocalFileStreamFArchive()
Definition LocalFileNetworkReplayStreaming.h:179
virtual LOCALFILENETWORKREPLAYSTREAMING_API int64 Tell() override
Definition LocalFileNetworkReplayStreaming.cpp:168
Definition NetworkVersion.h:20
Definition LocalFileNetworkReplayStreaming.h:329
virtual void IssueRequest()=0
virtual bool GetCachedRequest()
Definition LocalFileNetworkReplayStreaming.h:342
EQueuedLocalFileRequestType::Type GetRequestType() const
Definition LocalFileNetworkReplayStreaming.h:340
virtual void FinishRequest()=0
FQueuedLocalFileRequest(const TSharedPtr< FLocalFileNetworkReplayStreamer > &InStreamer, EQueuedLocalFileRequestType::Type InType)
Definition LocalFileNetworkReplayStreaming.h:331
FThreadSafeBool bCancelled
Definition LocalFileNetworkReplayStreaming.h:351
EQueuedLocalFileRequestType::Type RequestType
Definition LocalFileNetworkReplayStreaming.h:350
virtual ~FQueuedLocalFileRequest()
Definition LocalFileNetworkReplayStreaming.h:338
TSharedPtr< FLocalFileNetworkReplayStreamer > Streamer
Definition LocalFileNetworkReplayStreaming.h:349
Definition ThreadSafeBool.h:17
Definition Tickable.h:135
Definition NetworkReplayStreaming.h:516
Definition NetworkReplayStreaming.h:684
Definition ArrayView.h:139
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition AndroidPlatformMisc.h:14
Definition LocalFileNetworkReplayStreaming.h:480
virtual bool GetCachedRequest() override
Definition LocalFileNetworkReplayStreaming.h:487
TGenericCachedLocalFileRequest(int32 InCacheKey, const TSharedPtr< FLocalFileNetworkReplayStreamer > &InStreamer, EQueuedLocalFileRequestType::Type InType, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InFunction, TFunction< void(TLocalFileRequestCommonData< DelegateResultType > &)> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:482
int32 CacheKey
Definition LocalFileNetworkReplayStreaming.h:502
Definition LocalFileNetworkReplayStreaming.h:410
TGenericQueuedLocalFileRequest(const TSharedPtr< FLocalFileNetworkReplayStreamer > &InStreamer, EQueuedLocalFileRequestType::Type InType, TFunction< void(StorageType &)> &&InFunction, TFunction< void(StorageType &)> &&InCompletionCallback)
Definition LocalFileNetworkReplayStreaming.h:412
virtual void IssueRequest() override
Definition LocalFileNetworkReplayStreaming.h:420
StorageType Storage
Definition LocalFileNetworkReplayStreaming.h:454
virtual void FinishRequest() override
Definition LocalFileNetworkReplayStreaming.h:441
TFunction< void(StorageType &)> RequestFunction
Definition LocalFileNetworkReplayStreaming.h:457
TFunction< void(StorageType &)> CompletionCallback
Definition LocalFileNetworkReplayStreaming.h:458
Definition TaskGraphInterfaces.h:598
Definition LocalFileNetworkReplayStreaming.h:374
TLocalFileAsyncGraphTask(TFunction< ResultType()> &&InFunction, TPromise< ResultType > &&InPromise)
Definition LocalFileNetworkReplayStreaming.h:376
TStatId GetStatId() const
Definition LocalFileNetworkReplayStreaming.h:393
ENamedThreads::Type GetDesiredThread()
Definition LocalFileNetworkReplayStreaming.h:388
void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef &MyCompletionGraphEvent)
Definition LocalFileNetworkReplayStreaming.h:383
TFuture< ResultType > GetFuture()
Definition LocalFileNetworkReplayStreaming.h:398
Definition LocalFileNetworkReplayStreaming.h:463
TArray< uint8 > DataBuffer
Definition LocalFileNetworkReplayStreaming.h:470
ELocalFileReplayResult AsyncError
Definition LocalFileNetworkReplayStreaming.h:475
bool bAsyncError
Definition LocalFileNetworkReplayStreaming.h:473
DelegateResultType DelegateResult
Definition LocalFileNetworkReplayStreaming.h:465
FLocalFileReplayInfo ReplayInfo
Definition LocalFileNetworkReplayStreaming.h:468
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
UpdateFlags
Definition DetourCrowd.h:208
Type
Definition TaskGraphInterfaces.h:57
@ AnyBackgroundThreadNormalTask
Definition TaskGraphInterfaces.h:106
Definition NetworkReplayStreaming.h:103
Definition LocalFileNetworkReplayStreaming.h:213
@ false
Definition radaudio_common.h:23
static double Seconds()
Definition AndroidPlatformTime.h:20
Definition LocalFileNetworkReplayStreaming.h:74
FLocalFileChunkInfo()
Definition LocalFileNetworkReplayStreaming.h:75
int32 SizeInBytes
Definition LocalFileNetworkReplayStreaming.h:83
ELocalFileChunkType ChunkType
Definition LocalFileNetworkReplayStreaming.h:82
int64 DataOffset
Definition LocalFileNetworkReplayStreaming.h:85
int64 TypeOffset
Definition LocalFileNetworkReplayStreaming.h:84
Definition LocalFileNetworkReplayStreaming.h:112
FString Metadata
Definition LocalFileNetworkReplayStreaming.h:125
int64 EventDataOffset
Definition LocalFileNetworkReplayStreaming.h:130
uint32 Time1
Definition LocalFileNetworkReplayStreaming.h:126
FLocalFileEventInfo()
Definition LocalFileNetworkReplayStreaming.h:113
FString Group
Definition LocalFileNetworkReplayStreaming.h:124
FString Id
Definition LocalFileNetworkReplayStreaming.h:123
int32 ChunkIndex
Definition LocalFileNetworkReplayStreaming.h:121
int32 SizeInBytes
Definition LocalFileNetworkReplayStreaming.h:129
void CountBytes(FArchive &Ar) const
Definition LocalFileNetworkReplayStreaming.cpp:100
uint32 Time2
Definition LocalFileNetworkReplayStreaming.h:127
Definition LocalFileNetworkReplayStreaming.h:700
Definition LocalFileNetworkReplayStreaming.h:22
FLocalFileReplayCustomVersion()=delete
Type
Definition LocalFileNetworkReplayStreaming.h:24
@ EncryptionSupport
Definition LocalFileNetworkReplayStreaming.h:33
@ CustomVersions
Definition LocalFileNetworkReplayStreaming.h:34
@ CompressionSupport
Definition LocalFileNetworkReplayStreaming.h:29
@ FixedSizeFriendlyName
Definition LocalFileNetworkReplayStreaming.h:28
@ BeforeCustomVersionWasAdded
Definition LocalFileNetworkReplayStreaming.h:26
@ RecordingTimestamp
Definition LocalFileNetworkReplayStreaming.h:30
@ LatestVersion
Definition LocalFileNetworkReplayStreaming.h:38
@ FriendlyNameCharEncoding
Definition LocalFileNetworkReplayStreaming.h:32
@ StreamChunkTimes
Definition LocalFileNetworkReplayStreaming.h:31
@ VersionPlusOne
Definition LocalFileNetworkReplayStreaming.h:37
LOCALFILENETWORKREPLAYSTREAMING_API static const FGuid Guid
Definition LocalFileNetworkReplayStreaming.h:42
Definition LocalFileNetworkReplayStreaming.h:90
int32 SizeInBytes
Definition LocalFileNetworkReplayStreaming.h:104
int64 ReplayDataOffset
Definition LocalFileNetworkReplayStreaming.h:106
int32 ChunkIndex
Definition LocalFileNetworkReplayStreaming.h:101
int64 StreamOffset
Definition LocalFileNetworkReplayStreaming.h:107
uint32 Time1
Definition LocalFileNetworkReplayStreaming.h:102
int32 MemorySizeInBytes
Definition LocalFileNetworkReplayStreaming.h:105
FLocalFileReplayDataInfo()
Definition LocalFileNetworkReplayStreaming.h:91
uint32 Time2
Definition LocalFileNetworkReplayStreaming.h:103
Definition LocalFileNetworkReplayStreaming.h:137
int32 LengthInMS
Definition LocalFileNetworkReplayStreaming.h:151
bool bIsLive
Definition LocalFileNetworkReplayStreaming.h:157
FString FriendlyName
Definition LocalFileNetworkReplayStreaming.h:154
bool bCompressed
Definition LocalFileNetworkReplayStreaming.h:159
TArray< FLocalFileReplayDataInfo > DataChunks
Definition LocalFileNetworkReplayStreaming.h:169
bool bIsValid
Definition LocalFileNetworkReplayStreaming.h:158
TArray< uint8 > EncryptionKey
Definition LocalFileNetworkReplayStreaming.h:162
TArray< FLocalFileChunkInfo > Chunks
Definition LocalFileNetworkReplayStreaming.h:166
void CountBytes(FArchive &Ar) const
Definition LocalFileNetworkReplayStreaming.cpp:107
FLocalFileReplayInfo()
Definition LocalFileNetworkReplayStreaming.h:138
TArray< FLocalFileEventInfo > Checkpoints
Definition LocalFileNetworkReplayStreaming.h:167
uint32 Changelist
Definition LocalFileNetworkReplayStreaming.h:153
int64 TotalDataSizeInBytes
Definition LocalFileNetworkReplayStreaming.h:156
bool bEncrypted
Definition LocalFileNetworkReplayStreaming.h:161
FDateTime Timestamp
Definition LocalFileNetworkReplayStreaming.h:155
uint32 NetworkVersion
Definition LocalFileNetworkReplayStreaming.h:152
int32 HeaderChunkIndex
Definition LocalFileNetworkReplayStreaming.h:164
TArray< FLocalFileEventInfo > Events
Definition LocalFileNetworkReplayStreaming.h:168
Definition NetworkReplayStreaming.h:488
Definition LightweightStats.h:416
Definition NetResult.h:330