UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetBlob.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4#include "CoreTypes.h"
7#include "HAL/UnrealMemory.h"
10#include "Templates/UniquePtr.h"
11
12namespace UE::Net
13{
14 class FNetBlob;
15 class FNetSerializationContext;
16 struct FReplicationStateDescriptor;
17 class FNetReferenceCollector;
18 namespace Private
19 {
20 class FNetBlobManager;
21 }
22}
23
24namespace UE::Net
25{
26
29{
30 None = 0,
31
33 Reliable = 1U << 0U,
34
37
40
42 Ordered = HasExports << 1U,
43};
45
47
50
60
62{
63public:
65 {
67 {
68 None = 0,
69 // If the state is constructed as protectable one can call Protect() to detect memory stomps.
70 Protectable = 1,
71 };
72
78
81
82 uint8* GetStateBuffer() { return StateBuffer; }
83 const uint8* GetStateBuffer() const { return StateBuffer; }
84
86 IRISCORE_API void Protect();
87
90
91 private:
92 uint8* StateBuffer = nullptr;
94 uint32 AllocationSize = 0;
95 };
96
99
102
105
106 /* Whether the blob is reliably sent or not. */
108
111
114
117
120
123
126
129
132
134 void AddRef() const { ++RefCount; }
135
137 IRISCORE_API void Release() const;
138
140 int32 GetRefCount() const { return RefCount; }
141
142 /* Returns true if the blob has additional exports to add. */
144
147
150
151protected:
152 FNetBlob(const FNetBlob&) = delete;
153 FNetBlob& operator=(const FNetBlob&) = delete;
154
156 IRISCORE_API virtual ~FNetBlob();
157
160
163
166
169
170protected:
173
176
179
180private:
181 mutable int32 RefCount;
182};
183
222
224{
225 StateBuffer = Other.StateBuffer;
226 MemoryAllocationFlags = Other.MemoryAllocationFlags;
227 AllocationSize = Other.AllocationSize;
228
229 Other.StateBuffer = nullptr;
230 Other.MemoryAllocationFlags = EMemoryAllocationFlags::None;
231 Other.AllocationSize = 0;
232}
233
235{
236 if (StateBuffer)
237 {
238 Unprotect();
239 FMemory::Free(StateBuffer);
240 }
241
242 StateBuffer = Other.StateBuffer;
243 MemoryAllocationFlags = Other.MemoryAllocationFlags;
244 AllocationSize = Other.AllocationSize;
245
246 Other.StateBuffer = nullptr;
247 Other.MemoryAllocationFlags = EMemoryAllocationFlags::None;
248 Other.AllocationSize = 0;
249 return *this;
250}
251
260
261}
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ArrayView.h:139
Definition RefCounting.h:454
Definition NetBlob.h:62
bool HasExports() const
Definition NetBlob.h:143
IRISCORE_API void DeserializeBlob(FNetSerializationContext &Context)
Definition NetBlob.cpp:117
IRISCORE_API void SerializeBlob(FNetSerializationContext &Context) const
Definition NetBlob.cpp:109
virtual IRISCORE_API void Deserialize(FNetSerializationContext &Context)
Definition NetBlob.cpp:95
TRefCountPtr< const FReplicationStateDescriptor > BlobDescriptor
Definition NetBlob.h:175
static IRISCORE_API void SerializeCreationInfo(FNetSerializationContext &Context, const FNetBlobCreationInfo &CreationInfo)
Definition NetBlob.cpp:49
FNetBlob(const FNetBlob &)=delete
FQuantizedBlobState QuantizedBlobState
Definition NetBlob.h:178
FNetBlob & operator=(const FNetBlob &)=delete
virtual IRISCORE_API void DeserializeWithObject(FNetSerializationContext &Context, FNetRefHandle RefHandle)
Definition NetBlob.cpp:84
virtual TArrayView< const FNetObjectReference > GetNetObjectReferenceExports() const
Definition NetBlob.cpp:133
IRISCORE_API void CollectObjectReferences(FNetSerializationContext &Context, FNetReferenceCollector &Collector) const
Definition NetBlob.cpp:100
FNetBlobCreationInfo CreationInfo
Definition NetBlob.h:172
IRISCORE_API void Release() const
Definition NetBlob.cpp:125
bool IsReliable() const
Definition NetBlob.h:107
IRISCORE_API void SetState(const TRefCountPtr< const FReplicationStateDescriptor > &BlobDescriptor, FQuantizedBlobState &&QuantizedBlobState)
Definition NetBlob.cpp:43
const FReplicationStateDescriptor * GetReplicationStateDescriptor() const
Definition NetBlob.h:110
virtual IRISCORE_API ~FNetBlob()
Definition NetBlob.cpp:28
TArrayView< const FNetToken > CallGetNetTokenExports() const
Definition NetBlob.h:149
const FNetBlobCreationInfo & GetCreationInfo() const
Definition NetBlob.h:104
int32 GetRefCount() const
Definition NetBlob.h:140
static IRISCORE_API void DeserializeCreationInfo(FNetSerializationContext &Context, FNetBlobCreationInfo &OutCreationInfo)
Definition NetBlob.cpp:63
TArrayView< const FNetObjectReference > CallGetNetObjectReferenceExports() const
Definition NetBlob.h:146
void AddRef() const
Definition NetBlob.h:134
virtual TArrayView< const FNetToken > GetNetTokenExports() const
Definition NetBlob.cpp:138
virtual IRISCORE_API void SerializeWithObject(FNetSerializationContext &Context, FNetRefHandle RefHandle) const
Definition NetBlob.cpp:79
Definition NetBlob.h:189
void SetNetObjectReference(const FNetObjectReference &InQueueOwnerReference, const FNetObjectReference &InTargetObjectReference)
Definition NetBlob.h:252
const FNetObjectReference & GetTargetObjectReference() const
Definition NetBlob.h:193
IRISCORE_API void SerializeSubObjectReference(FNetSerializationContext &Context, FNetRefHandle RefHandle) const
Definition NetBlob.cpp:165
IRISCORE_API void SerializeObjectReference(FNetSerializationContext &Context) const
Definition NetBlob.cpp:153
virtual ~FNetObjectAttachment()
Definition NetBlob.cpp:149
IRISCORE_API void DeserializeObjectReference(FNetSerializationContext &Context)
Definition NetBlob.cpp:159
FNetObjectReference NetObjectReference
Definition NetBlob.h:217
const FNetObjectReference & GetNetObjectReference() const
Definition NetBlob.h:192
IRISCORE_API void DeserializeSubObjectReference(FNetSerializationContext &Context, FNetRefHandle RefHandle)
Definition NetBlob.cpp:170
FNetObjectReference TargetObjectReference
Definition NetBlob.h:220
Definition NetObjectReference.h:38
Definition NetRefHandle.h:25
Definition NetReferenceCollector.h:25
Definition NetSerializationContext.h:31
Definition NetBlobManager.h:38
Definition OverriddenPropertySet.cpp:45
@ None
Definition ReplicationDataStreamDebug.h:25
Definition NetworkVersion.cpp:28
ENetBlobFlags
Definition NetBlob.h:29
constexpr FNetBlobType InvalidNetBlobType
Definition NetBlob.h:49
uint32 FNetBlobType
Definition NetBlob.h:46
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
Definition NetBlob.h:56
FNetBlobType Type
Definition NetBlob.h:57
ENetBlobFlags Flags
Definition NetBlob.h:58
IRISCORE_API ~FQuantizedBlobState()
Definition NetBlob.cpp:194
EMemoryAllocationFlags
Definition NetBlob.h:67
FQuantizedBlobState & operator=(const FQuantizedBlobState &)=delete
const uint8 * GetStateBuffer() const
Definition NetBlob.h:83
uint8 * GetStateBuffer()
Definition NetBlob.h:82
IRISCORE_API void Protect()
Definition NetBlob.cpp:203
IRISCORE_API void Unprotect()
Definition NetBlob.cpp:222
FQuantizedBlobState(const FQuantizedBlobState &)=delete
Definition ReplicationStateDescriptor.h:199