UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetRefHandle.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"
6#include "Iris/IrisConfig.h"
9
10// Forward declarations
11class FString;
12
13namespace UE::Net::Private
14{
15 class FNetRefHandleManager;
16}
17
18namespace UE::Net
19{
20
25{
26public:
27
28 inline static FNetRefHandle GetInvalid() { return FNetRefHandle(); }
29
30private:
31 enum { InvalidValue = 0 };
32 enum { IdBits = 54 };
33 enum { ReplicationSystemIdBits = 10 };
34
35public:
36
37 static constexpr uint64 MaxReplicationSystemId = (1ULL << ReplicationSystemIdBits) - 1;
39
40 FNetRefHandle() : Value(InvalidValue) {}
41
42 uint64 GetId() const { return Id; }
44 bool IsValid() const { return Value != InvalidValue; }
45
47 bool IsCompleteHandle() const { return Value != InvalidValue && ReplicationSystemId != 0U; }
48
50 bool IsStatic() const { return Id & StaticIdMask; }
51
53 bool IsDynamic() const { return IsValid() && !IsStatic(); }
54
55 bool operator==(const FNetRefHandle& Other)const { return Id == Other.Id; }
56 bool operator<(const FNetRefHandle& Other)const { return Id < Other.Id; }
57 bool operator!=(const FNetRefHandle& Other)const { return Id != Other.Id; }
58
59 IRISCORE_API FString ToString() const;
60 IRISCORE_API FString ToCompactString() const;
61
62 static bool FullCompare(FNetRefHandle A, FNetRefHandle B) { return A.Value == B.Value; }
63
64private:
67
68 static constexpr uint64 StaticIdMask = 1;
69 static constexpr uint64 IdMask = (1ULL << IdBits) - 1;
70
71 union
72 {
73 struct
74 {
75 uint64 Id : IdBits; // Id, lowest bit indicates if the handle is static or dynamic
76 uint64 ReplicationSystemId : ReplicationSystemIdBits; // ReplicationSystemId, when running in pie, we track the owning instance
77 };
79 };
80};
81
83{
84 return ::GetTypeHash(Handle.GetId());
85}
86
88{
89 return Handle.GetId();
90}
91
92}
93
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
IRISCORE_API FStringBuilderBase & operator<<(FStringBuilderBase &Builder, const UE::Net::FNetRefHandle &NetHandle)
Definition NetRefHandle.cpp:39
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NetRefHandle.h:25
IRISCORE_API FString ToString() const
Definition NetRefHandle.cpp:11
static constexpr uint64 MaxReplicationSystemCount
Definition NetRefHandle.h:38
bool IsDynamic() const
Definition NetRefHandle.h:53
IRISCORE_API FString ToCompactString() const
Definition NetRefHandle.cpp:24
bool IsValid() const
Definition NetRefHandle.h:44
static constexpr uint64 MaxReplicationSystemId
Definition NetRefHandle.h:37
bool operator!=(const FNetRefHandle &Other) const
Definition NetRefHandle.h:57
uint64 ReplicationSystemId
Definition NetRefHandle.h:76
uint64 Value
Definition NetRefHandle.h:78
uint32 GetReplicationSystemId() const
Definition NetRefHandle.h:43
uint64 Id
Definition NetRefHandle.h:75
FNetRefHandle()
Definition NetRefHandle.h:40
bool IsCompleteHandle() const
Definition NetRefHandle.h:47
bool IsStatic() const
Definition NetRefHandle.h:50
bool operator==(const FNetRefHandle &Other) const
Definition NetRefHandle.h:55
friend uint32 GetTypeHash(const FNetRefHandle &Handle)
Definition NetRefHandle.h:82
static bool FullCompare(FNetRefHandle A, FNetRefHandle B)
Definition NetRefHandle.h:62
static FNetRefHandle GetInvalid()
Definition NetRefHandle.h:28
bool operator<(const FNetRefHandle &Other) const
Definition NetRefHandle.h:56
uint64 GetId() const
Definition NetRefHandle.h:42
Definition NetRefHandleManager.h:72
Definition NetworkVersion.cpp:28
Definition NetworkVersion.cpp:28
uint64 GetObjectIdForNetTrace(const FNetRefHandle &Handle)
Definition NetRefHandle.h:87
uint32 GetTypeHash(const FNetIDVariant &NetID)
Definition NetIDVariant.h:55