UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetworkMessage.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "CoreMinimal.h"
7#include "HAL/Platform.h"
9#include "Misc/ByteSwap.h"
10#include "Misc/Crc.h"
11#include "Misc/DateTime.h"
12#include "Misc/EnumClassFlags.h"
16
17class FArrayReader;
18class FString;
19
20enum
21{
22 DEFAULT_TCP_FILE_SERVING_PORT=41899, // default port to use when making file server tcp connections (used if no protocol is specified)
23 DEFAULT_HTTP_FILE_SERVING_PORT=41898 // port that the network file server uses
24};
25
26// transitional define. Set to zero to avoid using multichannel TCP for the file server and client.
27#define USE_MCSOCKET_FOR_NFS (0)
28
29// Message commands, these correspond to the operations of the low level file system
62
63// Reserved channels for the network file system over multichannel tcp
64namespace NFS_Channels
65{
66 enum Type
67 {
68 Main = 100,
70 Heatbeat = 102,
71 };
72}
73
74
75
77{
78 None = 0x00000000,
79 Streaming = 0x00000001,
80 PreCookedIterative = 0x00000002, //DEPRECATED
81};
83
84
85
90{
91public:
98 virtual bool Receive(uint8 *Results, int32 Size) const = 0;
105 virtual bool Send(const uint8 *Buffer, int32 Size) const = 0;
107 virtual uint32 GetMagic() const = 0;
110};
111
116{
118 class FSocket* Socket;
119public:
125 : Socket(InSocket)
126 {
127 }
128 SOCKETS_API virtual bool Receive(uint8 *Results, int32 Size) const;
129 SOCKETS_API virtual bool Send(const uint8 *Buffer, int32 Size) const;
130 virtual uint32 GetMagic() const
131 {
132 return 0x9E2B83C1;
133 }
134};
135
140{
142 class FMultichannelTcpSocket* Socket;
144 uint32 SendChannel;
146 uint32 ReceiveChannel;
147public:
155 : Socket(InSocket)
156 , SendChannel(InSendChannel)
158 {
159 check(SendChannel);
160 check(ReceiveChannel);
161 }
162 SOCKETS_API virtual bool Receive(uint8 *Results, int32 Size) const;
163 SOCKETS_API virtual bool Send(const uint8 *Buffer, int32 Size) const;
164 virtual uint32 GetMagic() const
165 {
166 return 0x9E2B83C2;
167 }
168};
169
174{
181
184 : Magic(InSocket.GetMagic())
185 , PayloadSize(0)
186 , PayloadCrc(0)
187 {
188 }
189
192 : Magic(InSocket.GetMagic())
193 {
194 // make a header for the given payload
195 PayloadSize = Payload.Num();
197 PayloadCrc = FCrc::MemCrc_DEPRECATED(Payload.GetData(), Payload.Num());
198 }
199
202 {
203 uint32 DesiredMagic = Header.Magic;
204 Ar << Header.Magic;
205 if (Ar.IsLoading())
206 {
208 if (Header.Magic != DesiredMagic)
209 {
212 if (Header.Magic == DesiredMagicSwapped)
213 {
215 Header.Magic = DesiredMagic;
216 }
217 }
218 }
219 if (Header.Magic == DesiredMagic)
220 {
221 Ar << Header.PayloadSize;
222 Ar << Header.PayloadCrc;
223 }
224 return Ar;
225 }
226
227
237 static SOCKETS_API bool WrapAndSendPayload(const TArray<uint8>& Payload, const FSimpleAbstractSocket& Socket);
238
248
260
261};
262
263
268{
274
277 , ReadOnly(false)
278 , TimeStamp(FDateTime::MinValue())
279 , AccessTimeStamp(FDateTime::MinValue())
280 , Size(-1)
281 {
282 }
283};
284
289{
290public:
292 {
293 // make sure the command is at the start
294 *this << Command;
295 }
296
297 // helper to serialize TCHAR* (there are a lot)
299 {
300 FString Temp(Str);
301 Ar << Temp;
302 return Ar;
303 }
304};
#define check(expr)
Definition AssertionMacros.h:314
uint32 BYTESWAP_ORDER32(uint32 Val)
Definition ByteSwap.h:64
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
auto Response
Definition ExternalRpcRegistry.cpp:598
EConnectionFlags
Definition NetworkMessage.h:77
@ DEFAULT_HTTP_FILE_SERVING_PORT
Definition NetworkMessage.h:23
@ DEFAULT_TCP_FILE_SERVING_PORT
Definition NetworkMessage.h:22
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 Archive.h:1208
UE_FORCEINLINE_HINT bool ForceByteSwapping() const
Definition Archive.h:399
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
void SetByteSwapping(bool Enabled)
Definition Archive.h:546
Definition ArrayReader.h:12
Definition BufferArchive.h:48
Definition MultichannelTcpSocket.h:23
Definition NetworkMessage.h:289
FNetworkFileArchive(uint32 Command)
Definition NetworkMessage.h:291
friend FNetworkFileArchive & operator<<(FNetworkFileArchive &Ar, const TCHAR *&Str)
Definition NetworkMessage.h:298
Definition NetworkMessage.h:140
virtual uint32 GetMagic() const
Definition NetworkMessage.h:164
FSimpleAbstractSocket_FMultichannelTCPSocket(class FMultichannelTcpSocket *InSocket, uint32 InSendChannel, uint32 InReceiveChannel=0)
Definition NetworkMessage.h:154
Definition NetworkMessage.h:116
FSimpleAbstractSocket_FSocket(class FSocket *InSocket)
Definition NetworkMessage.h:124
virtual uint32 GetMagic() const
Definition NetworkMessage.h:130
Definition NetworkMessage.h:90
virtual ~FSimpleAbstractSocket()
Definition NetworkMessage.h:109
virtual bool Send(const uint8 *Buffer, int32 Size) const =0
virtual bool Receive(uint8 *Results, int32 Size) const =0
virtual uint32 GetMagic() const =0
Definition Sockets.h:19
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
Definition NetworkMessage.h:65
Type
Definition NetworkMessage.h:67
@ UnsolicitedFiles
Definition NetworkMessage.h:69
@ Main
Definition NetworkMessage.h:68
@ Heatbeat
Definition NetworkMessage.h:70
Definition NetworkMessage.h:31
Type
Definition NetworkMessage.h:33
@ SetTimeStamp
Definition NetworkMessage.h:53
@ GetFileInfo
Definition NetworkMessage.h:47
@ Close
Definition NetworkMessage.h:51
@ DeleteDirectoryRecursively
Definition NetworkMessage.h:45
@ Write
Definition NetworkMessage.h:50
@ ToAbsolutePathForWrite
Definition NetworkMessage.h:55
@ IterateDirectoryRecursively
Definition NetworkMessage.h:44
@ GetFileList
Definition NetworkMessage.h:57
@ Seek
Definition NetworkMessage.h:52
@ IterateDirectory
Definition NetworkMessage.h:43
@ Read
Definition NetworkMessage.h:48
@ SyncFile
Definition NetworkMessage.h:34
@ MoveFile
Definition NetworkMessage.h:36
@ DeleteFile
Definition NetworkMessage.h:35
@ ToAbsolutePathForRead
Definition NetworkMessage.h:54
@ SetReadOnly
Definition NetworkMessage.h:37
@ ReportLocalFiles
Definition NetworkMessage.h:56
@ OpenAppend
Definition NetworkMessage.h:40
@ OpenWrite
Definition NetworkMessage.h:39
@ RecompileShaders
Definition NetworkMessage.h:59
@ OpenRead
Definition NetworkMessage.h:38
@ Heartbeat
Definition NetworkMessage.h:58
@ CreateDirectory
Definition NetworkMessage.h:41
@ DeleteDirectory
Definition NetworkMessage.h:42
@ CopyFile
Definition NetworkMessage.h:46
@ ReadAt
Definition NetworkMessage.h:49
@ false
Definition radaudio_common.h:23
static CORE_API uint32 MemCrc_DEPRECATED(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.cpp:592
Definition DateTime.h:76
Definition NetworkMessage.h:268
bool FileExists
Definition NetworkMessage.h:269
bool ReadOnly
Definition NetworkMessage.h:270
FFileInfo()
Definition NetworkMessage.h:275
int64 Size
Definition NetworkMessage.h:273
FDateTime AccessTimeStamp
Definition NetworkMessage.h:272
FDateTime TimeStamp
Definition NetworkMessage.h:271
Definition NetworkMessage.h:174
FNFSMessageHeader(const FSimpleAbstractSocket &InSocket, const TArray< uint8 > &Payload)
Definition NetworkMessage.h:191
friend FArchive & operator<<(FArchive &Ar, FNFSMessageHeader &Header)
Definition NetworkMessage.h:201
uint32 PayloadCrc
Definition NetworkMessage.h:180
static SOCKETS_API bool SendPayloadAndReceiveResponse(const TArray< uint8 > &Payload, class FArrayReader &Response, const FSimpleAbstractSocket &Socket)
Definition NetworkMessage.cpp:148
uint32 Magic
Definition NetworkMessage.h:176
static SOCKETS_API bool ReceivePayload(FArrayReader &OutPayload, const FSimpleAbstractSocket &Socket)
Definition NetworkMessage.cpp:90
FNFSMessageHeader(const FSimpleAbstractSocket &InSocket)
Definition NetworkMessage.h:183
uint32 PayloadSize
Definition NetworkMessage.h:178
static SOCKETS_API bool WrapAndSendPayload(const TArray< uint8 > &Payload, const FSimpleAbstractSocket &Socket)
Definition NetworkMessage.cpp:69