UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ReplicationProtocol.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
9
10namespace UE::Net
11{
12 struct FNetDebugName;
16}
17
18namespace UE::Net
19{
20
22{
23 None = 0,
24 NeedsPoll = 1,
30 // Whether this instance contains fragments from multiple owners
32 // Whether there's a state that has object references
34};
36
42{
43 // Cached information, A fragment can register itself multiple times with different ExternalSrcBuffers to support multi state fragments
49
54};
55
57{
58 None = 0,
59 // Whether any of the replication states has dynamic state
60 HasDynamicState = 1U << 0U,
61 // Whether there's a state with legacy lifetime conditionals
63 // Whether there's a changemask for conditionals stored in the internal state, such as when there are custom conditionals
65 // Whether there's a state that has connection specific serialization
67 // Whether there's a state that has object references
69 // Whether delta compression is supported or not, essentially whether it makes sense to create baselines or not.
71 // If there are some states in the protocol that partially uses pushbased dirtiness
73 // If all states uses full pushbased dirtiness
75};
77
83{
85 {
86 enum : uint16
87 {
88 InvalidEntry = 65535U,
89 };
90
92 };
98
100
101 // RefCounting used to track usage of the replication protocol
102 IRISCORE_API void AddRef() const;
103 IRISCORE_API void Release() const;
104 int32 GetRefCount() const { return RefCount; }
105
107 uint32 ReplicationStateCount; // Number of states
108 uint32 InternalTotalSize; // Total memory required to store the complete state
109 uint32 InternalTotalAlignment; // Alignment of the internal state
110 uint32 MaxExternalStateSize; // Max external state size, required when we push temporary states to game
111 uint32 MaxExternalStateAlignment; // Max external state alignment, required when allocating temporary state buffer
112
113 // These two members are only valid if traits include HasConditionalChangeMask. The target state has the HasLifetimeConditionals trait.
117
118 uint32 ChangeMaskBitCount; // How many bits do we need to store the full changemask
120
123
124 // TypeStatsIndex assigned to this protocol
126
127 // TODO: Cache parts of the descriptors in the protocol to avoid having to pull in the descriptor itself for operations iterating over the protocol
128
129 // Selected traits from the ReplicationStateDescriptors that might be handy to cache in the protocol.
131
132 // Keep a table of repindex -> fragment for each owner with pushbased data.
134 // Owner count
136
138};
139
140}
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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ReplicationFragment.h:176
@ None
Definition ReplicationDataStreamDebug.h:25
Definition NetworkVersion.cpp:28
uint32 FReplicationProtocolIdentifier
Definition ReplicationProtocol.h:13
EReplicationFragmentTraits
Definition ReplicationFragment.h:102
EReplicationInstanceProtocolTraits
Definition ReplicationProtocol.h:22
EReplicationProtocolTraits
Definition ReplicationProtocol.h:57
Definition NetDebugName.h:17
Definition ReplicationProtocol.h:45
uint8 * ExternalSrcBuffer
Definition ReplicationProtocol.h:46
EReplicationFragmentTraits Traits
Definition ReplicationProtocol.h:47
Definition ReplicationProtocol.h:42
FReplicationFragment *const * Fragments
Definition ReplicationProtocol.h:51
EReplicationInstanceProtocolTraits InstanceTraits
Definition ReplicationProtocol.h:53
uint16 FragmentCount
Definition ReplicationProtocol.h:52
FFragmentData * FragmentData
Definition ReplicationProtocol.h:50
uint32 NumEntries
Definition ReplicationProtocol.h:96
const FRepIndexToFragmentIndex * RepIndexToFragmentIndex
Definition ReplicationProtocol.h:95
@ InvalidEntry
Definition ReplicationProtocol.h:88
uint16 FragmentIndex
Definition ReplicationProtocol.h:91
Definition ReplicationProtocol.h:83
uint32 InternalTotalSize
Definition ReplicationProtocol.h:108
const FRepIndexToFragmentIndexTable * PushModelOwnerRepIndexToFragmentIndexTable
Definition ReplicationProtocol.h:133
int32 GetRefCount() const
Definition ReplicationProtocol.h:104
uint16 PushModelOwnerCount
Definition ReplicationProtocol.h:135
uint32 GetConditionalChangeMaskOffset() const
Definition ReplicationProtocol.h:99
IRISCORE_API void Release() const
Definition ReplicationProtocol.cpp:13
const FReplicationStateDescriptor ** ReplicationStateDescriptors
Definition ReplicationProtocol.h:106
uint32 InternalChangeMasksOffset
Definition ReplicationProtocol.h:119
int32 TypeStatsIndex
Definition ReplicationProtocol.h:125
uint32 ReplicationStateCount
Definition ReplicationProtocol.h:107
int32 RefCount
Definition ReplicationProtocol.h:137
uint32 FirstLifetimeConditionalsChangeMaskOffset
Definition ReplicationProtocol.h:116
uint16 FirstLifetimeConditionalsStateIndex
Definition ReplicationProtocol.h:114
uint16 LifetimeConditionalsStateCount
Definition ReplicationProtocol.h:115
uint32 MaxExternalStateAlignment
Definition ReplicationProtocol.h:111
FReplicationProtocolIdentifier ProtocolIdentifier
Definition ReplicationProtocol.h:121
const FNetDebugName * DebugName
Definition ReplicationProtocol.h:122
EReplicationProtocolTraits ProtocolTraits
Definition ReplicationProtocol.h:130
uint32 MaxExternalStateSize
Definition ReplicationProtocol.h:110
uint32 InternalTotalAlignment
Definition ReplicationProtocol.h:109
IRISCORE_API void AddRef() const
Definition ReplicationProtocol.cpp:8
uint32 ChangeMaskBitCount
Definition ReplicationProtocol.h:118
Definition ReplicationStateDescriptor.h:199