UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataStreamChannel.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3// Channel for sending and receiving all Iris data
4
5#pragma once
6
7#include "CoreTypes.h"
9#include "Engine/Channel.h"
11#include "DataStreamChannel.generated.h"
12
14
15namespace UE::Net
16{
17 enum class EDataStreamWriteMode : unsigned;
18};
19
20UCLASS(transient, customConstructor, MinimalAPI)
22{
24
26
27public:
29 ENGINE_API void PostTickDispatch();
30
31private:
32 static void AddReferencedObjects(UObject* Object, FReferenceCollector& Collector);
33
34 // UChannel interface
35 ENGINE_API virtual void Init(UNetConnection* InConnection, int32 InChIndex, EChannelCreateFlags CreateFlags) override;
36 ENGINE_API virtual void ReInit() override;
37 ENGINE_API virtual bool CleanUp(const bool bForDestroy, EChannelCloseReason CloseReason) override;
38
42 ENGINE_API virtual void ReceivedBunch(FInBunch& Bunch) override;
43
44 ENGINE_API virtual void Tick() override;
45
47 ENGINE_API virtual bool CanStopTicking() const override;
48
50 ENGINE_API virtual FString Describe() override;
51
53 ENGINE_API virtual void AppendExportBunches(TArray<FOutBunch *>& OutExportBunches) override;
54 virtual TArray<FOutBunch*> GetAdditionalRequiredBunches(const FOutBunch& OutgoingBunch, EChannelGetAdditionalRequiredBunchesFlags Flags) override;
55
56 ENGINE_API virtual void AppendMustBeMappedGuids(FOutBunch* Bunch) override;
57
58
60 ENGINE_API virtual void ReceivedAck(int32 PacketId) override;
61 ENGINE_API virtual void ReceivedNak(int32 PacketId) override;
62
63 ENGINE_API virtual bool HasAcknowledgedAllReliableData() const override;
64
65private:
66 void InitDataStreamManager();
67
68 enum : uint32
69 {
70 MaxPacketsInFlightCount = 256U,
71 BitStreamBufferByteCount = 2048U,
72 };
73
74 struct FDataStreamChannelRecord
75 {
76 const void* Record = nullptr;
77 uint32 PacketId = 0U;
78 };
79
80 bool IsPacketWindowFull() const;
81 void DiscardAllRecords();
82
83 void SendOpenBunch();
84
85 void WriteData(UE::Net::EDataStreamWriteMode WriteMode);
86
87 TObjectPtr<UDataStreamManager> DataStreamManager = nullptr;
88
90
91 uint32 BitStreamBuffer[BitStreamBufferByteCount];
92
93 uint32 bIsReadyToHandshake : 1U;
94 uint32 bHandshakeSent : 1U;
95 uint32 bHandshakeComplete : 1U;
96};
EChannelCloseReason
Definition CoreNetTypes.h:49
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
EChannelCreateFlags
Definition Channel.h:41
EChannelGetAdditionalRequiredBunchesFlags
Definition Channel.h:48
void Init()
Definition LockFreeList.h:4
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition DataBunch.h:127
Definition UObjectGlobals.h:1292
static COREUOBJECT_API FObjectInitializer & Get()
Definition UObjectGlobals.cpp:5001
Definition DataBunch.h:24
Definition UObjectGlobals.h:2492
Definition Array.h:670
Definition ResizableCircularQueue.h:21
Definition Channel.h:63
Definition DataStreamChannel.h:22
Definition DataStreamManager.h:40
Definition NetConnection.h:284
Definition Object.h:95
Definition NetworkVersion.cpp:28
EDataStreamWriteMode
Definition DataStream.h:22
Definition ObjectPtr.h:488