UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InMemoryNetworkReplayStreaming.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
10#include "Stats/Stats.h"
13#include "Tickable.h"
14
17
18/* Holds all data about an entire replay */
20{
38
48
51 {
52 // Add the first stream chunk, this one will contain the stream before the first checkpoint is written. */
53 StreamChunks.Emplace();
54 }
55
62
64 {
65 int64 TotalSize = sizeof(FInMemoryReplay);
66
67 TotalSize += Header.GetAllocatedSize();
68 TotalSize += StreamChunks.GetAllocatedSize();
69
70 for (const FStreamChunk& Chunk : StreamChunks)
71 {
72 TotalSize += Chunk.Data.GetAllocatedSize();
73 }
74
75 TotalSize += Metadata.GetAllocatedSize();
76 TotalSize += Checkpoints.GetAllocatedSize();
77
79 {
80 TotalSize += Checkpoint.Data.GetAllocatedSize();
81 }
82
83 return TotalSize;
84 }
85};
86
93{
94public:
99
100 virtual void Serialize(void* V, int64 Length);
101 virtual int64 Tell();
102 virtual int64 TotalSize();
103 virtual void Seek(int64 InPos);
104 virtual bool AtEnd();
105
106private:
107 FInMemoryReplay::FStreamChunk* GetCurrentChunk() const;
108
109 int64 Pos;
111};
112
115{
116public:
118 OwningFactory(InFactory),
119 StreamerState(EReplayStreamerState::Idle),
120 TimeBufferHintSeconds(-1.0f)
121 {
122 check(OwningFactory != nullptr);
123 }
124
126 virtual void StartStreaming(const FStartStreamingParameters& Params, const FStartStreamingCallback& Delegate) override;
127 virtual void StopStreaming() override;
128 virtual FArchive* GetHeaderArchive() override;
129 virtual FArchive* GetStreamingArchive() override;
130 virtual FArchive* GetCheckpointArchive() override;
131 virtual void FlushCheckpoint( const uint32 TimeInMS ) override;
132 virtual void GotoCheckpointIndex( const int32 CheckpointIndex, const FGotoCallback& Delegate, EReplayCheckpointType CheckpointType ) override;
133 virtual void GotoTimeInMS( const uint32 TimeInMS, const FGotoCallback& Delegate, EReplayCheckpointType CheckpointType ) override;
134 virtual void UpdateTotalDemoTime( uint32 TimeInMS ) override;
135 virtual void UpdatePlaybackTime(uint32 TimeInMS) override {}
136 virtual uint32 GetTotalDemoTime() const override;
137 virtual bool IsDataAvailable() const override;
138 virtual void SetHighPriorityTimeRange( const uint32 StartTimeInMS, const uint32 EndTimeInMS ) override { }
139 virtual bool IsDataAvailableForTimeRange( const uint32 StartTimeInMS, const uint32 EndTimeInMS ) override { return true; }
140 virtual bool IsLoadingCheckpoint() const override { return false; }
141 virtual bool IsLive() const override;
142 virtual void DeleteFinishedStream( const FString& StreamName, const FDeleteFinishedStreamCallback& Delegate) override;
143 virtual void DeleteFinishedStream( const FString& StreamName, const int32 UserIndex, const FDeleteFinishedStreamCallback& Delegate ) override;
144 virtual void EnumerateStreams( const FNetworkReplayVersion& ReplayVersion, const int32 UserIndex, const FString& MetaString, const TArray< FString >& ExtraParms, const FEnumerateStreamsCallback& Delegate ) override;
145 virtual void EnumerateRecentStreams( const FNetworkReplayVersion& ReplayVersion, const int32 UserIndex, const FEnumerateStreamsCallback& Delegate ) override;
146 virtual void AddUserToReplay(const FString& UserString) override;
147 virtual void AddEvent(const uint32 TimeInMS, const FString& Group, const FString& Meta, const TArray<uint8>& Data) override;
148 virtual void AddOrUpdateEvent( const FString& Name, const uint32 TimeInMS, const FString& Group, const FString& Meta, const TArray<uint8>& Data ) override {}
149 virtual void EnumerateEvents(const FString& Group, const FEnumerateEventsCallback& Delegate) override;
150 virtual void EnumerateEvents( const FString& ReplayName, const FString& Group, const FEnumerateEventsCallback& Delegate ) override;
151 virtual void EnumerateEvents( const FString& ReplayName, const FString& Group, const int32 UserIndex, const FEnumerateEventsCallback& Delegate ) override;
152 virtual void RequestEventData(const FString& EventID, const FRequestEventDataCallback& Delegate) override;
153 virtual void RequestEventData(const FString& ReplayName, const FString& EventID, const FRequestEventDataCallback& Delegate) override;
154 virtual void RequestEventData(const FString& ReplayName, const FString& EventId, const int32 UserIndex, const FRequestEventDataCallback& Delegate) override;
155 virtual void RequestEventGroupData(const FString& Group, const FRequestEventGroupDataCallback& Delegate) override;
156 virtual void RequestEventGroupData(const FString& ReplayName, const FString& Group, const FRequestEventGroupDataCallback& Delegate) override;
157 virtual void RequestEventGroupData(const FString& ReplayName, const FString& Group, const int32 UserIndex, const FRequestEventGroupDataCallback& Delegate) override;
158 virtual void SearchEvents(const FString& EventGroup, const FSearchEventsCallback& Delegate) override;
159 virtual void KeepReplay(const FString& ReplayName, const bool bKeep, const int32 UserIndex, const FKeepReplayCallback& Delegate) override;
160 virtual void KeepReplay(const FString& ReplayName, const bool bKeep, const FKeepReplayCallback& Delegate) override;
161 virtual void RenameReplayFriendlyName(const FString& ReplayName, const FString& NewFriendlyName, const FRenameReplayCallback& Delegate) override;
162 virtual void RenameReplayFriendlyName(const FString& ReplayName, const FString& NewFriendlyName, const int32 UserIndex, const FRenameReplayCallback& Delegate) override;
163 virtual void RenameReplay(const FString& ReplayName, const FString& NewName, const FRenameReplayCallback& Delegate) override;
164 virtual void RenameReplay(const FString& ReplayName, const FString& NewName, const int32 UserIndex, const FRenameReplayCallback& Delegate) override;
165 virtual FString GetReplayID() const override { return CurrentStreamName; }
166 virtual EReplayStreamerState GetReplayStreamerState() const override { return StreamerState; }
167 virtual void SetTimeBufferHintSeconds(const float InTimeBufferHintSeconds) override { TimeBufferHintSeconds = InTimeBufferHintSeconds; }
168 virtual void RefreshHeader() override {};
169 virtual void DownloadHeader(const FDownloadHeaderCallback& Delegate) override
170 {
173 Delegate.Execute(Result);
174 }
176 virtual void Tick(float DeltaSeconds) override;
178 virtual TStatId GetStatId() const override;
179
181 virtual bool IsTickableWhenPaused() const override { return true; }
182
183 virtual uint32 GetMaxFriendlyNameSize() const override { return 0; }
184
185 virtual EStreamingOperationResult SetDemoPath(const FString& DemoPath) override
186 {
188 }
189
190 virtual EStreamingOperationResult GetDemoPath(FString& DemoPath) const override
191 {
193 }
194
196
197private:
198 bool IsNamedStreamLive( const FString& StreamName ) const;
199
201 void GotoCheckpointIndexInternal(int32 CheckpointIndex, const FGotoCallback& Delegate, int32 TimeInMS);
202
207 FInMemoryReplay* GetCurrentReplay();
208
213 FInMemoryReplay* GetCurrentReplay() const;
214
219 FInMemoryReplay* GetCurrentReplayChecked();
220
225 FInMemoryReplay* GetCurrentReplayChecked() const;
226
229
231 TUniquePtr<FArchive> HeaderAr;
232
235
236 /* Handle to the archive that will read/write checkpoint files */
237 TUniquePtr<FArchive> CheckpointAr;
238
243 FInMemoryReplay::FCheckpoint CheckpointCurrentlyBeingSaved;
244
246 EReplayStreamerState StreamerState;
247
249 FString CurrentStreamName;
250
255 float TimeBufferHintSeconds;
256};
257
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EStreamingOperationResult
Definition NetworkReplayStreaming.h:197
@ Unsupported
The operation succeeded.
EReplayCheckpointType
Definition NetworkReplayStreaming.h:482
EReplayStreamerState
Definition NetworkReplayStreaming.h:498
ETickableTickType
Definition Tickable.h:20
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition InMemoryNetworkReplayStreaming.h:115
virtual void AddOrUpdateEvent(const FString &Name, const uint32 TimeInMS, const FString &Group, const FString &Meta, const TArray< uint8 > &Data) override
Definition InMemoryNetworkReplayStreaming.h:148
virtual void EnumerateStreams(const FNetworkReplayVersion &ReplayVersion, const int32 UserIndex, const FString &MetaString, const TArray< FString > &ExtraParms, const FEnumerateStreamsCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:201
FInMemoryNetworkReplayStreamer(FInMemoryNetworkReplayStreamingFactory *InFactory)
Definition InMemoryNetworkReplayStreaming.h:117
virtual bool IsTickableWhenPaused() const override
Definition InMemoryNetworkReplayStreaming.h:181
virtual FString GetReplayID() const override
Definition InMemoryNetworkReplayStreaming.h:165
virtual void GotoCheckpointIndex(const int32 CheckpointIndex, const FGotoCallback &Delegate, EReplayCheckpointType CheckpointType) override
Definition InMemoryNetworkReplayStreaming.cpp:428
virtual bool IsLoadingCheckpoint() const override
Definition InMemoryNetworkReplayStreaming.h:140
virtual EStreamingOperationResult SetDemoPath(const FString &DemoPath) override
Definition InMemoryNetworkReplayStreaming.h:185
virtual bool IsCheckpointTypeSupported(EReplayCheckpointType CheckpointType) const override
Definition InMemoryNetworkReplayStreaming.h:195
virtual EStreamingOperationResult GetDemoPath(FString &DemoPath) const override
Definition InMemoryNetworkReplayStreaming.h:190
virtual void StartStreaming(const FStartStreamingParameters &Params, const FStartStreamingCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:19
virtual bool IsDataAvailable() const override
Definition InMemoryNetworkReplayStreaming.cpp:142
virtual void RefreshHeader() override
Definition InMemoryNetworkReplayStreaming.h:168
virtual FArchive * GetCheckpointArchive() override
Definition InMemoryNetworkReplayStreaming.cpp:335
virtual void AddUserToReplay(const FString &UserString) override
Definition InMemoryNetworkReplayStreaming.cpp:224
virtual uint32 GetMaxFriendlyNameSize() const override
Definition InMemoryNetworkReplayStreaming.h:183
virtual void RenameReplayFriendlyName(const FString &ReplayName, const FString &NewFriendlyName, const FRenameReplayCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:314
virtual void KeepReplay(const FString &ReplayName, const bool bKeep, const int32 UserIndex, const FKeepReplayCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:296
virtual ETickableTickType GetTickableTickType() const override
Definition InMemoryNetworkReplayStreaming.h:177
virtual void StopStreaming() override
Definition InMemoryNetworkReplayStreaming.cpp:92
virtual void GotoTimeInMS(const uint32 TimeInMS, const FGotoCallback &Delegate, EReplayCheckpointType CheckpointType) override
Definition InMemoryNetworkReplayStreaming.cpp:512
virtual void UpdatePlaybackTime(uint32 TimeInMS) override
Definition InMemoryNetworkReplayStreaming.h:135
virtual void DownloadHeader(const FDownloadHeaderCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.h:169
virtual void SetHighPriorityTimeRange(const uint32 StartTimeInMS, const uint32 EndTimeInMS) override
Definition InMemoryNetworkReplayStreaming.h:138
virtual void EnumerateRecentStreams(const FNetworkReplayVersion &ReplayVersion, const int32 UserIndex, const FEnumerateStreamsCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:193
virtual void DeleteFinishedStream(const FString &StreamName, const FDeleteFinishedStreamCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:171
virtual void RequestEventData(const FString &EventID, const FRequestEventDataCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:252
virtual TStatId GetStatId() const override
Definition InMemoryNetworkReplayStreaming.cpp:558
virtual FArchive * GetStreamingArchive() override
Definition InMemoryNetworkReplayStreaming.cpp:119
virtual void RenameReplay(const FString &ReplayName, const FString &NewName, const FRenameReplayCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:327
virtual void EnumerateEvents(const FString &Group, const FEnumerateEventsCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:244
virtual void UpdateTotalDemoTime(uint32 TimeInMS) override
Definition InMemoryNetworkReplayStreaming.cpp:124
virtual bool IsDataAvailableForTimeRange(const uint32 StartTimeInMS, const uint32 EndTimeInMS) override
Definition InMemoryNetworkReplayStreaming.h:139
virtual bool IsLive() const override
Definition InMemoryNetworkReplayStreaming.cpp:150
virtual void FlushCheckpoint(const uint32 TimeInMS) override
Definition InMemoryNetworkReplayStreaming.cpp:401
virtual void AddEvent(const uint32 TimeInMS, const FString &Group, const FString &Meta, const TArray< uint8 > &Data) override
Definition InMemoryNetworkReplayStreaming.cpp:229
virtual void SearchEvents(const FString &EventGroup, const FSearchEventsCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:288
virtual FArchive * GetHeaderArchive() override
Definition InMemoryNetworkReplayStreaming.cpp:114
virtual EReplayStreamerState GetReplayStreamerState() const override
Definition InMemoryNetworkReplayStreaming.h:166
virtual void SetTimeBufferHintSeconds(const float InTimeBufferHintSeconds) override
Definition InMemoryNetworkReplayStreaming.h:167
virtual uint32 GetTotalDemoTime() const override
Definition InMemoryNetworkReplayStreaming.cpp:133
virtual void RequestEventGroupData(const FString &Group, const FRequestEventGroupDataCallback &Delegate) override
Definition InMemoryNetworkReplayStreaming.cpp:270
Definition InMemoryNetworkReplayStreaming.h:259
virtual TSharedPtr< INetworkReplayStreamer > CreateReplayStreamer()
Definition InMemoryNetworkReplayStreaming.cpp:655
Definition InMemoryNetworkReplayStreaming.h:93
virtual bool AtEnd()
Definition InMemoryNetworkReplayStreaming.cpp:633
virtual int64 Tell()
Definition InMemoryNetworkReplayStreaming.cpp:611
FInMemoryReplayStreamArchive(TArray< FInMemoryReplay::FStreamChunk > &InChunks)
Definition InMemoryNetworkReplayStreaming.h:95
virtual int64 TotalSize()
Definition InMemoryNetworkReplayStreaming.cpp:616
Definition NetworkVersion.h:20
Definition Tickable.h:135
Definition NetworkReplayStreaming.h:516
Definition NetworkReplayStreaming.h:684
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition NetworkReplayStreaming.h:408
Definition InMemoryNetworkReplayStreaming.h:22
FCheckpoint()
Definition InMemoryNetworkReplayStreaming.h:23
TArray< uint8 > Data
Definition InMemoryNetworkReplayStreaming.h:27
uint32 TimeInMS
Definition InMemoryNetworkReplayStreaming.h:28
uint32 StreamByteOffset
Definition InMemoryNetworkReplayStreaming.h:29
void Reset()
Definition InMemoryNetworkReplayStreaming.h:31
Definition InMemoryNetworkReplayStreaming.h:41
FStreamChunk()
Definition InMemoryNetworkReplayStreaming.h:42
int32 StartIndex
Definition InMemoryNetworkReplayStreaming.h:44
uint32 TimeInMS
Definition InMemoryNetworkReplayStreaming.h:45
TArray< uint8 > Data
Definition InMemoryNetworkReplayStreaming.h:46
Definition InMemoryNetworkReplayStreaming.h:20
FInMemoryReplay()
Definition InMemoryNetworkReplayStreaming.h:49
int64 TotalStreamSize() const
Definition InMemoryNetworkReplayStreaming.h:63
TArray< uint8 > Header
Definition InMemoryNetworkReplayStreaming.h:56
TArray< FStreamChunk > StreamChunks
Definition InMemoryNetworkReplayStreaming.h:57
TArray< uint8 > Metadata
Definition InMemoryNetworkReplayStreaming.h:58
uint32 NetworkVersion
Definition InMemoryNetworkReplayStreaming.h:61
TArray< FCheckpoint > Checkpoints
Definition InMemoryNetworkReplayStreaming.h:59
FNetworkReplayStreamInfo StreamInfo
Definition InMemoryNetworkReplayStreaming.h:60
Definition NetworkReplayStreaming.h:71
Definition NetworkReplayStreaming.h:488
Definition LightweightStats.h:416