UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ReplicationConnections.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 "Containers/Array.h"
9#include "UObject/ObjectPtr.h"
11
13namespace UE::Net::Private
14{
15 class FReplicationWriter;
16 class FReplicationReader;
17}
18
19namespace UE::Net::Private
20{
21
23{
28 bool bIsClosing = false; // Should be set when a connection starts the graceful close process to finish flushing reliable data
29};
30
32{
33public:
34 explicit FReplicationConnections(uint32 MaxConnections = 128)
35 : ValidConnections(MaxConnections)
36 {
37 Connections.SetNumZeroed(MaxConnections);
38 ReplicationViews.SetNum(MaxConnections);
39 }
40
41 void Deinit();
42
43 const FReplicationConnection* GetConnection(uint32 ConnectionId) const
44 {
45 if (ValidConnections.GetBit(ConnectionId))
46 {
47 return &Connections[ConnectionId];
48 }
49
50 return nullptr;
51 }
52
54 {
55 if (ValidConnections.GetBit(ConnectionId))
56 {
57 return &Connections[ConnectionId];
58 }
59
60 return nullptr;
61 }
62
63 bool IsValidConnection(uint32 ConnectionId) const
64 {
65 return ConnectionId < GetMaxConnectionCount() && ValidConnections.GetBit(ConnectionId);
66 }
67
68 bool IsOpenConnection(uint32 ConnectionId) const
69 {
70 return ConnectionId < GetMaxConnectionCount() && ValidConnections.GetBit(ConnectionId) && !Connections[ConnectionId].bIsClosing;
71 }
72
73 void AddConnection(uint32 ConnectionId)
74 {
75 check(ValidConnections.GetBit(ConnectionId) == false);
76 ValidConnections.SetBit(ConnectionId);
77 }
78
79 IRISCORE_API void RemoveConnection(uint32 ConnectionId);
80
81 uint32 GetMaxConnectionCount() const { return ValidConnections.GetNumBits(); }
82
83 const FNetBitArray& GetValidConnections() const { return ValidConnections; }
84
85 // Returns connections that are not in the closing state
87
88 void InitDataStreamManager(uint32 ReplicationSystemId, uint32 ConnectionId, UDataStreamManager* DataStreamManager);
89 void DeinitDataStreamManager(uint32 ConnectionId);
90
91 void SetReplicationView(uint32 ConnectionId, const FReplicationView& ViewInfo);
92 const FReplicationView& GetReplicationView(uint32 ConnectionId) const { return ReplicationViews[ConnectionId]; }
93
94 // Flag a connection as being in a graceful-close state meant to flush pending reliable data.
95 void SetConnectionIsClosing(uint32 ConnectionId)
96 {
97 check(ValidConnections.GetBit(ConnectionId) == true);
98 Connections[ConnectionId].bIsClosing = true;
99 }
100private:
102 TArray<FReplicationView> ReplicationViews;
103 FNetBitArray ValidConnections;
104};
105
106}
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Array.h:670
Definition DataStreamManager.h:40
Definition NetBitArray.h:74
bool GetBit(uint32 Index) const
Definition NetBitArray.h:1253
void SetBit(uint32 Index)
Definition NetBitArray.h:1228
uint32 GetNumBits() const
Definition NetBitArray.h:1192
Definition ReplicationConnections.h:32
void SetReplicationView(uint32 ConnectionId, const FReplicationView &ViewInfo)
Definition ReplicationConnections.cpp:38
FReplicationConnection * GetConnection(uint32 ConnectionId)
Definition ReplicationConnections.h:53
uint32 GetMaxConnectionCount() const
Definition ReplicationConnections.h:81
const FReplicationView & GetReplicationView(uint32 ConnectionId) const
Definition ReplicationConnections.h:92
bool IsValidConnection(uint32 ConnectionId) const
Definition ReplicationConnections.h:63
FReplicationConnections(uint32 MaxConnections=128)
Definition ReplicationConnections.h:34
const FNetBitArray & GetValidConnections() const
Definition ReplicationConnections.h:83
void AddConnection(uint32 ConnectionId)
Definition ReplicationConnections.h:73
bool IsOpenConnection(uint32 ConnectionId) const
Definition ReplicationConnections.h:68
FNetBitArray GetOpenConnections() const
Definition ReplicationConnections.cpp:54
IRISCORE_API void RemoveConnection(uint32 ConnectionId)
Definition ReplicationConnections.cpp:43
void DeinitDataStreamManager(uint32 ConnectionId)
Definition ReplicationConnections.cpp:69
void InitDataStreamManager(uint32 ReplicationSystemId, uint32 ConnectionId, UDataStreamManager *DataStreamManager)
Definition ReplicationConnections.cpp:18
const FReplicationConnection * GetConnection(uint32 ConnectionId) const
Definition ReplicationConnections.h:43
void SetConnectionIsClosing(uint32 ConnectionId)
Definition ReplicationConnections.h:95
void Deinit()
Definition ReplicationConnections.cpp:13
Definition ReplicationReader.h:51
Definition ReplicationWriter.h:55
Definition NetworkVersion.cpp:28
Definition ObjectPtr.h:55
Definition WeakObjectPtrTemplates.h:25
Definition ReplicationView.h:19
Definition ReplicationConnections.h:23
TWeakObjectPtr< UDataStreamManager > DataStreamManager
Definition ReplicationConnections.h:26
FReplicationWriter * ReplicationWriter
Definition ReplicationConnections.h:24
bool bIsClosing
Definition ReplicationConnections.h:28
FReplicationReader * ReplicationReader
Definition ReplicationConnections.h:25
FObjectPtr UserData
Definition ReplicationConnections.h:27