UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DeltaCompressionBaselineStorage.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
9
10namespace UE::Net
11{
12 class FReplicationStateStorage;
13}
14
15namespace UE::Net::Private
16{
17
19
21
27
36
37
39{
40public:
43
45 void Deinit();
46
50 /* GetBaseline requires the StateInfoIndex to point to a created baseline, not one that is just reserved. */
52
53 /*
54 * Reserves a baseline for the current state. The returned info will contain a pointer to the current state.
55 * OptionallyCommitAndReleaseBaseline needs to be called later which will clone the current state if there are
56 * references after decrementing the ref count. AddRefBaseline and ReleaseBaseline may be called in between
57 * the first call to ReserveBaselineForCurrentState and a call to OptionallyCommitAndDoReleaseBaseline.
58 */
60 /* Decrements the ref count on the baseline and frees associated storage if it's zero and clones the current state if it's still referenced. */
62 /* When you want to retrieve the info for a reserved baseline when GetBaseline() cannot be used. */
64
65
66private:
67 enum : unsigned
68 {
69 BaselineStateInfoGrowCount = 256U,
70 };
71
72 struct FInternalBaselineStateInfo
73 {
74 uint8* StateBuffer = nullptr;
75 uint32 ObjectIndex = 0;
76 uint32 RefCount = 1;
77 };
78
79 void ConstructBaselineStateInfo(FInternalBaselineStateInfo* BaselineStateInfo) const;
80 void DestructBaselineStateInfo(FInternalBaselineStateInfo* BaselineStateInfo);
81
82 DeltaCompressionBaselineStateInfoIndexType AllocBaselineStateInfo();
83 void FreeBaselineStateInfo(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex);
84 void FreeAllBaselineStateInfos();
85
86 FInternalBaselineStateInfo* GetBaselineStateInfo(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex);
87 const FInternalBaselineStateInfo* GetBaselineStateInfo(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex) const;
88
89private:
90 FNetBitArray UsedBaselineStateInfos;
91 TChunkedArray<FInternalBaselineStateInfo, BaselineStateInfoGrowCount*sizeof(FInternalBaselineStateInfo)> BaselineStateInfos;
92 FReplicationStateStorage* ReplicationStateStorage = nullptr;
93};
94
95inline FDeltaCompressionBaselineStorage::FInternalBaselineStateInfo* FDeltaCompressionBaselineStorage::GetBaselineStateInfo(uint32 StateInfoIndex)
96{
97 return &BaselineStateInfos[StateInfoIndex];
98}
99
100inline const FDeltaCompressionBaselineStorage::FInternalBaselineStateInfo* FDeltaCompressionBaselineStorage::GetBaselineStateInfo(uint32 StateInfoIndex) const
101{
102 return &BaselineStateInfos[StateInfoIndex];
103}
104
105}
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ChunkedArray.h:56
Definition NetBitArray.h:74
Definition ReplicationStateStorage.h:48
Definition DeltaCompressionBaselineStorage.h:29
bool IsValid() const
Definition DeltaCompressionBaselineStorage.h:31
uint8 * StateBuffer
Definition DeltaCompressionBaselineStorage.h:33
DeltaCompressionBaselineStateInfoIndexType StateInfoIndex
Definition DeltaCompressionBaselineStorage.h:34
Definition DeltaCompressionBaselineStorage.h:39
void ReleaseBaseline(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex)
Definition DeltaCompressionBaselineStorage.cpp:79
FDeltaCompressionBaselineStorage()
Definition DeltaCompressionBaselineStorage.cpp:18
void Deinit()
Definition DeltaCompressionBaselineStorage.cpp:35
FDeltaCompressionBaselineStateInfo GetBaselineReservationForCurrentState(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex)
Definition DeltaCompressionBaselineStorage.cpp:154
void AddRefBaseline(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex)
Definition DeltaCompressionBaselineStorage.cpp:71
void OptionallyCommitAndDoReleaseBaseline(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex)
Definition DeltaCompressionBaselineStorage.cpp:135
~FDeltaCompressionBaselineStorage()
Definition DeltaCompressionBaselineStorage.cpp:23
FDeltaCompressionBaselineStateInfo ReserveBaselineForCurrentState(uint32 ObjectIndex)
Definition DeltaCompressionBaselineStorage.cpp:104
FDeltaCompressionBaselineStateInfo CreateBaselineFromCurrentState(uint32 ObjectIndex)
Definition DeltaCompressionBaselineStorage.cpp:40
FDeltaCompressionBaselineStateInfo GetBaseline(DeltaCompressionBaselineStateInfoIndexType StateInfoIndex) const
Definition DeltaCompressionBaselineStorage.cpp:91
Definition NetworkVersion.cpp:28
constexpr DeltaCompressionBaselineStateInfoIndexType InvalidDeltaCompressionBaselineStateInfoIndex
Definition DeltaCompressionBaselineStorage.h:20
uint32 DeltaCompressionBaselineStateInfoIndexType
Definition DeltaCompressionBaselineStorage.h:18
Definition NetworkVersion.cpp:28
Definition DeltaCompressionBaselineStorage.h:23
FReplicationStateStorage * ReplicationStateStorage
Definition DeltaCompressionBaselineStorage.h:24
uint32 MaxBaselineCount
Definition DeltaCompressionBaselineStorage.h:25