UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataStream.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 "DataStream.generated.h"
7
9
10namespace UE::Net
11{
12 class FNetSerializationContext;
13 enum class EPacketDeliveryStatus : uint8;
14
15 namespace Private
16 {
17 class FNetExports;
18 }
19
20
21enum class EDataStreamWriteMode : unsigned
22{
23 // Allowed to write all data, this is the default WriteMode
24 Full,
25
26 // Only write data that should be sent after PostTickDispatch
28};
29
30}
31
39{
40};
41
47UENUM()
49{
50 Pause = 0,
51 Send,
52};
53
58UCLASS(abstract, MinimalAPI, transient)
60{
62
63public:
64 enum class EWriteResult
65 {
66 // If NoData is returned then ReadData will not be called on the receiving end.
67 NoData,
68 // Everything was sent or this stream don't want to send more this frame even if there's more bandwidth.
69 Ok,
70 // We have more data to write and can continue to write more if we get another call to write
71 HasMoreData,
72 };
73
74 enum class EUpdateType : uint8
75 {
76 // Update originating from ReplicationSystem::PreSendUpdate
77 PreSendUpdate = 0,
78
79 // Update originating from the end of the main Network tick
80 PostTickFlush = 1,
81 };
82
84 {
85 // Stream is invalid
86 Invalid = 0,
87 // We should send open/init to other side
88 PendingCreate,
89 // We are waiting for confirmation that remote have accepted the stream
90 WaitOnCreateConfirmation,
91 // Stream is open and we will process incoming data.
92 Open,
93 // We are closing, but still considerd open until flushed
94 PendingClose,
95 // We have send a close request and is waiting for confirmation before invalidating stream
96 WaitOnCloseConfirmation,
97
98 Count
99 };
100
102 {
103 public:
104 FInitParameters() = default;
110
111 UE::Net::Private::FNetExports* NetExports = nullptr;
113 uint32 ReplicationSystemId = 0U;
114 uint32 ConnectionId = 0U;
115 uint32 PacketWindowSize = 0U;
116
117 private:
118 // We only want this to be accessible from UDataStream base
119 UDataStreamManager* DataStreamManager = nullptr;
120 friend UDataStream;
121 };
122
124 {
126
127 // Default to sending 1 packet per write. If 0 = unlimited packets
128 uint32 MaxPackets = 1U;
129 };
130
135
136public:
137 IRISCORE_API virtual ~UDataStream();
138
140 IRISCORE_API virtual void Init(const FInitParameters& Params);
141
143 IRISCORE_API virtual void Deinit();
144
148 IRISCORE_API virtual void Update(const FUpdateParameters& Params);
149
154 IRISCORE_API virtual EWriteResult BeginWrite(const FBeginWriteParameters& Params);
155
168 virtual EWriteResult WriteData(UE::Net::FNetSerializationContext& Context, FDataStreamRecord const*& OutRecord) PURE_VIRTUAL(WriteData, return EWriteResult::NoData;);
169
173 IRISCORE_API virtual void EndWrite();
174
180
187 virtual void ProcessPacketDeliveryStatus(UE::Net::EPacketDeliveryStatus Status, FDataStreamRecord const* Record) PURE_VIRTUAL(ProcessPacketDeliveryStatus,);
188
192 virtual bool HasAcknowledgedAllReliableData() const PURE_VIRTUAL(HasAcknowledgedAllReliableData, return true;);
193
197 FName GetDataStreamName() const
198 {
199 return DataStreamInitParameters.Name;
200 }
201
207 IRISCORE_API void RequestClose();
208
211
212protected:
215 {
216 return DataStreamInitParameters;
217 }
218
219private:
220 FInitParameters DataStreamInitParameters;
221};
222
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EDataStreamSendStatus
Definition DataStream.h:49
const TCHAR * LexToString(const UDataStream::EDataStreamState State)
Definition DataStream.cpp:34
return true
Definition ExternalRpcRegistry.cpp:601
UE_FORCEINLINE_HINT uint64 GetState() const
Definition LockFreeList.h:46
void Init()
Definition LockFreeList.h:4
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition DataStreamManager.h:40
Definition DataStream.h:60
virtual void ReadData(UE::Net::FNetSerializationContext &Context) PURE_VIRTUAL(ReadData
virtual void virtual void ProcessPacketDeliveryStatus(UE::Net::EPacketDeliveryStatus Status, FDataStreamRecord const *Record) PURE_VIRTUAL(ProcessPacketDeliveryStatus
EUpdateType
Definition DataStream.h:75
const UDataStream::FInitParameters & GetInitParameters() const
Definition DataStream.h:214
EDataStreamState
Definition DataStream.h:84
virtual void virtual void virtual bool HasAcknowledgedAllReliableData() const PURE_VIRTUAL(HasAcknowledgedAllReliableData
EWriteResult
Definition DataStream.h:65
Definition NetSerializationContext.h:31
Definition NetExports.h:17
Definition Object.h:95
Definition OverriddenPropertySet.cpp:45
Definition NetworkVersion.cpp:28
EPacketDeliveryStatus
Definition PacketNotification.h:12
EDataStreamWriteMode
Definition DataStream.h:22
Definition DataStream.h:39
Definition DataStream.h:124
Definition DataStream.h:102
FInitParameters(UDataStreamManager *InDataStreamManager, const FInitParameters &InParams)
Definition DataStream.h:105
FName Name
Definition DataStream.h:112
Definition DataStream.h:132
EUpdateType UpdateType
Definition DataStream.h:133