UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetDriver.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3//
4// Base class of a network driver attached to an active or pending level.
5#pragma once
6
7#include "CoreMinimal.h"
10#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_7
12#endif
13#include "HAL/IConsoleManager.h"
14#include "Math/RandomStream.h"
17#include "UObject/Object.h"
18#include "UObject/ObjectKey.h"
19#include "Misc/NetworkGuid.h"
20#include "UObject/CoreNet.h"
21#include "Channel.h"
24#include "IPAddress.h"
28#include "Templates/PimplPtr.h"
29#include "NetDriver.generated.h"
30
324
325class Error;
326class FNetGUIDCache;
327struct FNetSyncLoadReport;
328class FNetworkNotify;
332class FRepLayout;
334class FVoicePacket;
336class UNetConnection;
340struct FNetworkObjectInfo;
341class UChannel;
344class UNetDriver;
345class UActorChannel;
346class PacketHandler;
348
352namespace UE::Net
353{
354 class FNetObjectGroupHandle;
355}
356
357namespace UE::Net
358{
359 class FNetTokenStore;
360 class FNetIDVariant;
361 struct FServerReplicateActors_ForConnectionParams;
362
374
376
379}
380
382
396
397namespace UE::Net::Private
398{
400 extern int32 SerializeNewActorOverrideLevel;
401}
402
403// Delegates
404
405#if !UE_BUILD_SHIPPING
417DECLARE_DELEGATE_SevenParams(FOnSendRPC, AActor* /*Actor*/, UFunction* /*Function*/, void* /*Parameters*/,
418 FOutParmRec* /*OutParms*/, FFrame* /*Stack*/, UObject* /*SubObject*/, bool& /*bBlockSendRPC*/);
419
424
425#endif
426
435{
436 float DeltaSeconds = 0;
438 bool bCPUSaturated = false;
439};
440
442
443//
444// Whether to support net lag and packet loss testing.
445//
446#define DO_ENABLE_NET_TEST !(UE_BUILD_SHIPPING)
447
448#ifndef NET_DEBUG_RELEVANT_ACTORS
449#define NET_DEBUG_RELEVANT_ACTORS !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
450#endif
451
453USTRUCT()
455{
457
458
466 UPROPERTY(EditAnywhere, Category="Simulation Settings")
467 int32 PktLoss = 0;
468
475 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
476 int32 PktLossMaxSize = 0;
477
484 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
485 int32 PktLossMinSize = 0;
486
494 UPROPERTY(EditAnywhere, Category="Simulation Settings")
495 int32 PktOrder = 0;
496
505 UPROPERTY(EditAnywhere, Category="Simulation Settings")
506 int32 PktDup = 0;
507
514 UPROPERTY(EditAnywhere, Category="Simulation Settings")
515 int32 PktLag = 0;
516
523 UPROPERTY(EditAnywhere, Category="Simulation Settings")
524 int32 PktLagVariance = 0;
525
530 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
531 int32 PktLagMin = 0;
532 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
533 int32 PktLagMax = 0;
534
539 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
540 int32 PktIncomingLagMin = 0;
541
546 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
547 int32 PktIncomingLagMax = 0;
548
553 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
554 int32 PktIncomingLoss = 0;
555
560 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
561 int32 PktJitter = 0;
562
566 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
567 int32 PktFrameDelay = 0;
568
572 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
573 int32 PktIncomingFrameDelay = 0;
574
576 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
577 int32 PktBufferBloatInMS = 0;
578
580 UPROPERTY(EditAnywhere, Category = "Simulation Settings")
581 int32 PktIncomingBufferBloatInMS = 0;
582
586 ENGINE_API void LoadConfig(const TCHAR* OptionalQualifier = nullptr);
587
592 ENGINE_API bool LoadEmulationProfile(const TCHAR* ProfileName);
593
598
602 ENGINE_API void ValidateSettings();
603 ENGINE_API void ResetSettings();
604
608 bool ShouldDropPacketOfSize(int32 NumBits) const
609 {
610 const bool bIsBigEnough = NumBits > PktLossMinSize * 8;
611 const bool bIsSmallEnough = PktLossMaxSize == 0 || NumBits < PktLossMaxSize * 8;
613 }
614
621 ENGINE_API bool ParseSettings(const TCHAR* Stream, const TCHAR* OptionalQualifier=nullptr);
622
623 ENGINE_API bool ParseHelper(const TCHAR* Cmd, const TCHAR* Name, int32& Value, const TCHAR* OptionalQualifier);
624
625 ENGINE_API bool ConfigHelperInt(const TCHAR* Name, int32& Value, const TCHAR* OptionalQualifier);
626 ENGINE_API bool ConfigHelperBool(const TCHAR* Name, bool& Value, const TCHAR* OptionalQualifier);
627};
628
653
655USTRUCT()
657{
659
660
661 UPROPERTY()
662 uint32 MaxReplicatedObjectCount = 0;
663
665 UPROPERTY()
666 uint32 InitialNetObjectListCount = 0;
667
669 UPROPERTY()
670 uint32 NetObjectListGrowCount = 0;
671
673 UPROPERTY()
674 uint32 PreAllocatedMemoryBuffersObjectCount = 0;
675
677 UPROPERTY()
678 uint32 MaxReplicationWriterObjectCount = 0;
679
681 UPROPERTY()
682 uint32 MaxDeltaCompressedObjectCount = 0;
683
685 UPROPERTY()
686 uint32 MaxNetObjectGroupCount = 0;
687
692 UPROPERTY()
693 bool bAllowParallelTasks = false;
694};
695
696//
697// Priority sortable list.
698//
715
717{
718 inline bool operator()( const FActorPriority& A, const FActorPriority& B ) const
719 {
720 return B.Priority < A.Priority;
721 }
722};
723
725USTRUCT()
727{
729
730 UPROPERTY()
731 FName ChannelName; // Channel type identifier
732
733 UPROPERTY()
734 FName ClassName; // UClass name used to create the UChannel
735
736 UPROPERTY()
737 TObjectPtr<UClass> ChannelClass; // UClass used to create the UChannel
738
739 UPROPERTY()
740 int32 StaticChannelIndex; // Channel always uses this index, INDEX_NONE if dynamically chosen
741
742 UPROPERTY()
743 uint8 bTickOnCreate : 1; // Whether to immediately begin ticking the channel after creation
744
745 UPROPERTY()
746 uint8 bServerOpen : 1; // Channel opened by the server
747
748 UPROPERTY()
749 uint8 bClientOpen : 1; // Channel opened by the client
750
751 UPROPERTY()
752 uint8 bInitialServer : 1; // Channel created on server when connection is established
753
754 UPROPERTY()
755 uint8 bInitialClient : 1; // Channel created on client before connecting
756
758 ChannelName(NAME_None),
759 ClassName(NAME_None),
760 ChannelClass(nullptr),
761 StaticChannelIndex(INDEX_NONE),
762 bTickOnCreate(false),
763 bServerOpen(false),
764 bClientOpen(false),
765 bInitialServer(false),
766 bInitialClient(false)
767 {
768 }
769};
770
788
790{
791 None = 0,
792 ReplicatedActor = 1 << 0,
794};
796
797UCLASS(Abstract, customConstructor, transient, MinimalAPI, config=Engine)
799{
801
802protected:
803
804 virtual ENGINE_API void InternalProcessRemoteFunction(
805 class AActor* Actor,
806 class UObject* SubObject,
807 class UNetConnection* Connection,
808 class UFunction* Function,
809 void* Parms,
810 FOutParmRec* OutParms,
811 FFrame* Stack,
812 bool bIsServer);
813
814private:
815
816 void InternalProcessRemoteFunctionPrivate(
817 class AActor* Actor,
818 class UObject* SubObject,
819 class UNetConnection* Connection,
820 class UFunction* Function,
821 void* Parms,
822 FOutParmRec* OutParms,
823 FFrame* Stack,
824 const bool bIsServer,
826
827public:
828
831
833 UPROPERTY(Config)
834 FString NetConnectionClassName;
835
836 UPROPERTY(Config)
837 FString ReplicationDriverClassName;
838
840 UPROPERTY(Config)
841 FString ReplicationBridgeClassName;
842
844 UPROPERTY(Config)
845 FNetDriverReplicationSystemConfig ReplicationSystemConfigServer;
846
848 UPROPERTY(Config)
849 FNetDriverReplicationSystemConfig ReplicationSystemConfigClient;
850
852 UPROPERTY(Config)
853 int32 MaxDownloadSize;
854
856 UPROPERTY(Config)
857 uint32 bClampListenServerTickRate:1;
858
863 UE_DEPRECATED(5.3, "Variable will be made private. Use GetNetServerMaxTickRate and SetNetServerMaxTickRate instead.")
864 UPROPERTY(Config)
865 int32 NetServerMaxTickRate;
866
868 int32 GetNetServerMaxTickRate() const
869 {
871 return NetServerMaxTickRate;
873 }
874
876 ENGINE_API void SetNetServerMaxTickRate(int32 InServerMaxTickRate);
877
879 void TryUpgradeNetworkFeatures(EEngineNetworkRuntimeFeatures RemoteFeatures);
880
889
891 UPROPERTY(Config)
892 int32 MaxNetTickRate;
893
895 UPROPERTY(Config)
896 int32 MaxInternetClientRate;
897
899 UPROPERTY(Config)
900 int32 MaxClientRate;
901
903 UPROPERTY(Config)
904 float ServerTravelPause;
905
907 UPROPERTY(Config)
908 float SpawnPrioritySeconds;
909
915 UPROPERTY(Config)
916 float RelevantTimeout;
917
919 UPROPERTY(Config)
920 float KeepAliveTime;
921
923 UPROPERTY(Config)
924 float InitialConnectTimeout;
925
931 UPROPERTY(Config)
933
938 UPROPERTY(Config)
939 float GracefulCloseConnectionTimeout = 2.0f;
940
946 UPROPERTY(Config)
947 float TimeoutMultiplierForUnoptimizedBuilds;
948
950 UPROPERTY()
951 TObjectPtr<class UNetConnection> ServerConnection;
952
954 UPROPERTY()
955 TArray<TObjectPtr<UNetConnection>> ClientConnections;
956
961 FConnectionMap MappedClientConnections;
962
964 TArray<FDisconnectedClient> RecentlyDisconnectedClients;
965
967 UPROPERTY(Config)
968 int32 RecentlyDisconnectedTrackingTime;
969
970
972 TUniquePtr<PacketHandler> ConnectionlessHandler;
973
975 TWeakPtr<StatelessConnectHandlerComponent> StatelessConnectComponent;
976
978 TSharedPtr<IAnalyticsProvider> AnalyticsProvider;
979
982
984 UPROPERTY()
986
987 UPROPERTY()
988 TObjectPtr<class UPackage> WorldPackage;
989
991 //UE_DEPRECATED(5.6, "Variable will be made private. Use GetNetGuidCache() methods instead.")
992 TSharedPtr<class FNetGUIDCache> GuidCache;
993
994 TSharedPtr< class FClassNetCacheMgr > NetCache;
995
997 UPROPERTY()
998 TObjectPtr<UClass> NetConnectionClass;
999
1000 UPROPERTY()
1001 TObjectPtr<UClass> ChildNetConnectionClass;
1002
1003 UPROPERTY()
1004 TObjectPtr<UClass> ReplicationDriverClass;
1005
1007 TObjectPtr<UClass> ReplicationBridgeClass;
1008
1010 FProperty* RoleProperty;
1011
1013 FProperty* RemoteRoleProperty;
1014
1016 UPROPERTY(Config)
1017 FName NetDriverName;
1018
1020 UPROPERTY(Config)
1021 TArray<FChannelDefinition> ChannelDefinitions;
1022
1024 UPROPERTY()
1025 TMap<FName, FChannelDefinition> ChannelDefinitionMap;
1026
1028 inline bool IsKnownChannelName(const FName& ChName) const
1029 {
1030 return ChannelDefinitionMap.Contains(ChName);
1031 }
1032
1034 ENGINE_API void CreateInitialClientChannels();
1035
1037 ENGINE_API void CreateInitialServerChannels(UNetConnection* ClientConnection);
1038
1044 ENGINE_API void AddObjectToNetworkIdCache(UObject* Object);
1045
1051 ENGINE_API void RemoveObjectFromNetworkIdCache(UObject* Object);
1052
1053protected:
1060 ENGINE_API virtual void SetupNetworkMetrics();
1061
1062private:
1063
1065 UPROPERTY()
1066 TArray<TObjectPtr<UChannel>> ActorChannelPool;
1067
1069 FName NetDriverDefinition;
1070
1072 int32 MaxChannelsOverride;
1073
1075 UPROPERTY()
1076 TObjectPtr<UNetworkMetricsDatabase> NetworkMetricsDatabase;
1077
1079 UPROPERTY()
1080 TMap<FName, TObjectPtr<UNetworkMetricsBaseListener>> NetworkMetricsListeners;
1081
1083 void SetupNetworkMetricsListeners(bool bIsClient);
1084
1086 void RegisterStatsListener(const FName MetricName, const FName StatName);
1087
1089 void ResetNetworkMetrics();
1090
1091public:
1094 FOnNetUpdateFrequencyChanged& GetOnNetUpdateFrequencyChanged() { return OnNetUpdateFrequencyChanged; };
1095
1096private:
1097 FOnNetUpdateFrequencyChanged OnNetUpdateFrequencyChanged;
1098
1099public:
1101 int32 GetMaxChannelsOverride() const { return MaxChannelsOverride; }
1102
1104 UChannel* GetOrCreateChannelByName(const FName& ChName);
1105
1107 void ReleaseToChannelPool(UChannel* Channel);
1108
1110 void SetNetDriverName(FName NewNetDriverNamed);
1111
1113 void SetNetDriverDefinition(FName NewNetDriverDefinition);
1114
1116 FName GetNetDriverDefinition() const { return NetDriverDefinition; }
1117
1119 ENGINE_API void PostCreation(bool bInitializeWithIris);
1120
1122 ENGINE_API void ReinitBase();
1123
1124 void InitPacketSimulationSettings();
1125
1127#if DO_ENABLE_NET_TEST
1129#endif
1130
1133
1134 double GetElapsedTime() const { return ElapsedTime; }
1135 void ResetElapsedTime() { ElapsedTime = 0.0; }
1136
1138 ENGINE_API void RequestNetDriverDestruction();
1139
1141 bool IsInTick() const { return bInTick; }
1142
1144 bool GetPendingDestruction() const { return bPendingDestruction; }
1145
1146 UE_DEPRECATED(5.6, "SetPendingDestruction will be made private. Use RequestNetDriverDestruction instead")
1147 ENGINE_API void SetPendingDestruction(bool bDestroy);
1148
1153 const TSharedPtr<class FNetGUIDCache>& GetNetGuidCache() const
1154 {
1155 // Disabled until we have addressed the issues found.
1156 //ensureMsgf(!IsUsingIrisReplication(), TEXT("Using NetGuidCache/FNetworkGUIDs is not supported when using Iris replication."));
1157
1159 return GuidCache;
1161 }
1162
1168 {
1169 // Disabled until we have addressed the issues found.
1170 //ensureMsgf(!IsUsingIrisReplication(), TEXT("Using NetGuidCache/FNetworkGUIDs is not supported using Iris replication."));
1171
1173 return GuidCache;
1175 }
1176
1177private:
1178
1180 double ElapsedTime;
1181
1183 bool bInTick;
1184
1185 uint8 bPendingDestruction : 1;
1186
1187#if DO_ENABLE_NET_TEST
1189 uint8 bForcedPacketSettings : 1;
1190#endif
1191
1192 uint8 bDidHitchLastFrame : 1;
1193
1195 uint8 bHasReplayConnection : 1;
1196
1197protected:
1199
1201
1203
1204public:
1208 UPROPERTY(Config)
1209 uint8 bNoTimeouts : 1;
1210
1215 UPROPERTY(Config)
1216 uint8 bNeverApplyNetworkEmulationSettings : 1;
1217
1219 uint8 bIsPeer : 1;
1221 uint8 ProfileStats : 1;
1223 uint8 bSkipLocalStats : 1;
1225 uint8 bCollectNetStats : 1;
1227 uint8 bIsStandbyCheckingEnabled : 1;
1229 uint8 bHasStandbyCheatTriggered : 1;
1230
1232 double LastTickDispatchRealtime;
1234 int32 SendCycles;
1236 uint32 InBytesPerSecond;
1238 uint32 OutBytesPerSecond;
1240 uint32 InBytes;
1242 uint32 InTotalBytes;
1244 uint32 OutBytes;
1246 uint32 OutTotalBytes;
1248 uint32 NetGUIDOutBytes;
1250 uint32 NetGUIDInBytes;
1252 uint32 InPackets;
1254 uint32 PrevInPackets;
1256 uint32 InTotalPackets;
1258 uint32 OutPackets;
1260 uint32 PrevOutPackets;
1262 uint32 OutTotalPackets;
1264 uint32 InBunches;
1266 uint32 OutBunches;
1268 uint32 InTotalBunches;
1270 uint32 OutTotalBunches;
1272 uint32 OutTotalReliableBunches;
1274 uint32 InTotalReliableBunches;
1276 uint32 InPacketsLost;
1278 uint32 PrevInPacketsLost;
1280 uint32 InTotalPacketsLost;
1282 uint32 OutPacketsLost;
1284 uint32 PrevOutPacketsLost;
1286 uint32 OutTotalPacketsLost;
1288 uint32 VoicePacketsSent;
1290 uint32 VoiceBytesSent;
1292 uint32 VoicePacketsRecv;
1294 uint32 VoiceBytesRecv;
1296 uint32 VoiceInPercent;
1298 uint32 VoiceOutPercent;
1300 double StatUpdateTime;
1302 float StatPeriod;
1304 uint32 TotalRPCsCalled;
1306 uint32 OutTotalAcks;
1307
1309 double LastCleanupTime;
1311 float StandbyRxCheatTime;
1313 float StandbyTxCheatTime;
1315 int32 BadPingThreshold;
1317 float PercentMissingForRxStandby;
1318 float PercentMissingForTxStandby;
1320 float PercentForBadPing;
1322 float JoinInProgressStandbyWaitTime;
1324 int32 NetTag;
1325
1326#if NET_DEBUG_RELEVANT_ACTORS
1329
1335
1337#endif // NET_DEBUG_RELEVANT_ACTORS
1338
1346
1347private:
1348
1350 TMap<FName, TSet<FNetworkGUID>> DestroyedStartupOrDormantActorsByLevel;
1351
1353 TMap<FString, FString> CachedNetAnalyticsAttributes;
1354
1357
1358public:
1359
1361 {
1362 return DestroyedStartupOrDormantActorsByLevel.FindOrAdd(LevelName);
1363 }
1364
1371 void SetNetAnalyticsAttributes(const FString& AttributeKey, const FString& AttributeValue) { CachedNetAnalyticsAttributes.Add(AttributeKey, AttributeValue); }
1372
1377
1380
1383
1385 TSharedPtr< FRepLayout > GetObjectClassRepLayout( UClass * InClass );
1386
1388 ENGINE_API TSharedPtr<FRepLayout> GetFunctionRepLayout( UFunction * Function );
1389
1391 ENGINE_API TSharedPtr<FRepLayout> GetStructRepLayout( UStruct * Struct );
1392
1399 TSharedPtr< FReplicationChangelistMgr > GetReplicationChangeListMgr( UObject* Object );
1400
1405
1411
1412#if !UE_BUILD_SHIPPING
1415
1418#endif
1419
1422
1425
1428
1433 void UpdateStandbyCheatStatus(void);
1434
1436 ENGINE_API virtual void SetAnalyticsProvider(TSharedPtr<IAnalyticsProvider> InProvider);
1437
1438#if DO_ENABLE_NET_TEST
1440
1445
1447#endif
1448
1449 // Constructors.
1451
1453
1454
1455 //~ Begin UObject Interface.
1456 ENGINE_API virtual void PostInitProperties() override;
1457 ENGINE_API virtual void PostReloadConfig(FProperty* PropertyToLoad) override;
1458 ENGINE_API virtual void FinishDestroy() override;
1459 ENGINE_API virtual void Serialize( FArchive& Ar ) override;
1460 ENGINE_API static void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
1461 //~ End UObject Interface.
1462
1463 //~ Begin FExec Interface
1464protected:
1474 ENGINE_API virtual bool Exec_Dev(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar=*GLog) override;
1475//~ End FExec Interface.
1476
1477public:
1478
1480 ENGINE_API void EnableExecuteRPCFunctions(bool bEnable);
1481 ENGINE_API bool IsExecuteRPCFunctionsEnabled() const;
1482
1484 ENGINE_API void EnablePreReplication(bool bEnable);
1485 ENGINE_API bool IsPreReplicationEnabled() const;
1486
1488 ENGINE_API void ReplicateAutonomousAsSimulated(bool bEnabled);
1489 ENGINE_API bool IsReplicatingAutonomousAsSimulated() const;
1490
1492 virtual bool CanDowngradeActorRole(UNetConnection* Connection, AActor* Actor) const { return true; };
1493
1494private:
1495
1496 bool bExecuteRPCFunctions = true;
1497 bool bCallPreReplication = true;
1498 bool bReplicatingAutonomousAsSimulated = false;
1499
1501 TSet< FObjectReplicator* > ReplicatorsWithPendingTransactions;
1502
1503public:
1504
1505 ENGINE_API ENetMode GetNetMode() const;
1506
1513 virtual bool IsAvailable() const PURE_VIRTUAL( UNetDriver::IsAvailable, return false;)
1514
1526 ENGINE_API virtual bool InitBase(bool bInitAsClient, FNetworkNotify* InNotify, const FURL& URL, bool bReuseAddressAndPort, FString& Error);
1527
1538
1549 virtual bool InitListen(class FNetworkNotify* InNotify, FURL& ListenURL, bool bReuseAddressAndPort, FString& Error) PURE_VIRTUAL( UNetDriver::InitListen, return true;);
1550
1552 ENGINE_API virtual void InitDestroyedStartupActors();
1553
1558 ENGINE_API virtual void InitConnectionlessHandler();
1559
1564 ENGINE_API virtual void FlushHandler();
1565
1567 ENGINE_API virtual bool InitConnectionClass(void);
1568
1570 ENGINE_API virtual bool InitReplicationDriverClass();
1571
1573 ENGINE_API virtual bool InitReplicationBridgeClass();
1576
1577 /* Close socket and Free the memory the OS allocated for this socket */
1578 ENGINE_API virtual void LowLevelDestroy();
1579
1580 /* @return network number */
1581 ENGINE_API virtual FString LowLevelGetNetworkNumber();
1582
1583 /* @return local addr of this machine if set */
1584 virtual TSharedPtr<const FInternetAddr> GetLocalAddr() { return LocalAddr; }
1585
1587 ENGINE_API virtual void AssertValid();
1588
1604 ENGINE_API virtual int32 ServerReplicateActors(float DeltaSeconds);
1605
1616 ENGINE_API virtual void ProcessRemoteFunction(class AActor* Actor, class UFunction* Function, void* Parms, struct FOutParmRec* OutParms, struct FFrame* Stack, class UObject* SubObject = nullptr );
1617
1619 TObjectPtr<UNetworkMetricsDatabase> GetMetrics() { return NetworkMetricsDatabase; };
1620
1622 {
1624 Default,
1625
1627 ForceSend,
1628
1630 ForceQueue,
1631 };
1632 UE_DEPRECATED(5.4, "Use fully scoped enum class value UNetDriver::ERemoteFunctionSendPolicy::Default")
1634 UE_DEPRECATED(5.4, "Use fully scoped enum class value UNetDriver::ERemoteFunctionSendPolicy::ForceSend")
1636 UE_DEPRECATED(5.4, "Use fully scoped enum class value UNetDriver::ERemoteFunctionSendPolicy::ForceQueue")
1638
1640 ENGINE_API void ProcessRemoteFunctionForChannel(
1642 const class FClassNetCache* ClassCache,
1645 UNetConnection* Connection,
1647 void* Parms,
1648 FOutParmRec* OutParms,
1649 FFrame* Stack,
1650 const bool IsServer,
1652
1653 ENGINE_API void ProcessRemoteFunctionForChannel(
1655 const class FClassNetCache* ClassCache,
1658 UNetConnection* Connection,
1660 void* Parms,
1661 FOutParmRec* OutParms,
1662 FFrame* Stack,
1663 const bool IsServer,
1666
1667private:
1668
1669 void ProcessRemoteFunctionForChannelPrivate(
1671 const class FClassNetCache* ClassCache,
1674 UNetConnection* Connection,
1676 void* Parms,
1677 FOutParmRec* OutParms,
1678 FFrame* Stack,
1679 const bool bIsServer,
1682
1683public:
1684
1686 ENGINE_API virtual void TickDispatch( float DeltaTime );
1687
1689 ENGINE_API virtual void PostTickDispatch();
1690
1692 ENGINE_API virtual void TickFlush(float DeltaSeconds);
1693
1695 ENGINE_API virtual void PostTickFlush();
1696
1706 virtual void LowLevelSend(TSharedPtr<const FInternetAddr> Address, void* Data, int32 CountBits, FOutPacketTraits& Traits)
1707 PURE_VIRTUAL(UNetDriver::LowLevelSend,);
1708
1712 ENGINE_API virtual void ProcessLocalServerPackets();
1713
1717 ENGINE_API virtual void ProcessLocalClientPackets();
1718
1722 ENGINE_API virtual void UpdateNetworkLagState();
1723
1731 ENGINE_API virtual void ReplicateVoicePacket(TSharedPtr<class FVoicePacket> VoicePacket, class UNetConnection* CameFromConn);
1732
1733#if !UE_BUILD_SHIPPING
1737 bool HandleSocketsCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1738 bool HandlePackageMapCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1739 bool HandleNetFloodCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1740 bool HandleNetDebugTextCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1741 bool HandleNetDisconnectCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1742 bool HandleNetDumpServerRPCCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1743 bool HandleNetDumpDormancy(const TCHAR* Cmd, FOutputDevice& Ar);
1744 bool HandleDumpSubObjectsCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1745 bool HandleDumpRepLayoutFlagsCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1746 bool HandlePushModelMemCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1747 bool HandlePropertyConditionsMemCommand(const TCHAR* Cmd, FOutputDevice& Ar);
1748#endif
1749
1750 ENGINE_API void HandlePacketLossBurstCommand( int32 DurationInMilliseconds );
1751
1752 // ---------------------------------------------------------------
1753 // Game code API for updating server Actor Replication State
1754 // ---------------------------------------------------------------
1755
1756 ENGINE_API virtual void ForceNetUpdate(AActor* Actor);
1757
1758 ENGINE_API void ForceAllActorsNetUpdateTime(float NetUpdateTimeOffset, TFunctionRef<bool(const AActor* const)> ValidActorTestFunc);
1759
1761 ENGINE_API void FlushActorDormancy(AActor *Actor, bool bWasDormInitial=false);
1762
1763 //~ This probably doesn't need to be exported, since it's only called by AActor::SetNetDormancy.
1764
1766 ENGINE_API void NotifyActorDormancyChange(AActor* Actor, ENetDormancy OldDormancyState);
1767
1769 ENGINE_API virtual void NotifyActorClientDormancyChanged(AActor* Actor, ENetDormancy OldDormancyState);
1770
1772 ENGINE_API void ForcePropertyCompare( AActor* Actor );
1773
1775 ENGINE_API void ForceActorRelevantNextUpdate(AActor* Actor);
1776
1778 ENGINE_API virtual void AddNetworkActor(AActor* Actor);
1779
1781 ENGINE_API virtual void NotifyActorDestroyed(AActor* Actor, bool IsSeamlessTravel = false, EChannelCloseReason CloseReason = EChannelCloseReason::Destroyed);
1782
1783 void NotifySubObjectDestroyed(UObject* SubObject);
1784
1786 UE_DEPRECATED(5.4, "Replaced by overload that takes the PreviousOuter")
1787 ENGINE_API virtual void NotifyActorRenamed(AActor* Actor, FName PreviousName);
1788
1790 ENGINE_API virtual void NotifyActorRenamed(AActor* Actor, UObject* PreviousOuter, FName PreviousName);
1791
1792 ENGINE_API virtual void RemoveNetworkActor(AActor* Actor);
1793
1795 void DeleteSubObjectOnClients(AActor* Actor, UObject* SubObject);
1796
1798 void TearOffSubObjectOnClients(AActor* Actor, UObject* SubObject);
1799
1800 ENGINE_API virtual void NotifyActorLevelUnloaded( AActor* Actor );
1801
1802 ENGINE_API virtual void NotifyActorTearOff(AActor* Actor);
1803
1805 ENGINE_API void NotifyActorIsTraveling(AActor* TravelingActor);
1806
1808 ENGINE_API void SetRoleSwapOnReplicate(AActor* Actor, bool bSwapRoles);
1809
1810 // ---------------------------------------------------------------
1811 //
1812 // ---------------------------------------------------------------
1813
1814 ENGINE_API virtual void NotifyStreamingLevelUnload( ULevel* );
1815
1818
1820 FString GetDescription() const
1821 {
1822 return FString::Printf(TEXT("Name:%s Def:%s %s%s"), *NetDriverName.ToString(), *NetDriverDefinition.ToString(), *GetName(), bIsPeer ? TEXT("(PEER)") : TEXT(""));
1823 }
1824
1826 ENGINE_API virtual bool IsServer() const;
1827
1828 ENGINE_API virtual void CleanPackageMaps();
1829
1830 void RemoveClassRepLayoutReferences(UClass* Class);
1831
1832 ENGINE_API void CleanupWorldForSeamlessTravel();
1833
1834 ENGINE_API void PreSeamlessTravelGarbageCollect();
1835
1836 ENGINE_API void PostSeamlessTravelGarbageCollect();
1837
1841 virtual class ISocketSubsystem* GetSocketSubsystem() PURE_VIRTUAL(UNetDriver::GetSocketSubsystem, return NULL;);
1842
1849 ENGINE_API virtual void SetWorld(class UWorld* InWorld);
1850
1854 virtual class UWorld* GetWorld() const override final { return World; }
1855
1856 class UPackage* GetWorldPackage() const { return WorldPackage; }
1857
1859 ENGINE_API virtual void ResetGameWorldState();
1860
1863
1864 bool NetObjectIsDynamic(const UObject *Object) const;
1865
1867 void DrawNetDriverDebug();
1868
1873 TSharedPtr<FRepChangedPropertyTracker> FindOrCreateRepChangedPropertyTracker(UObject *Obj);
1874
1876 TSharedPtr<FRepChangedPropertyTracker> FindRepChangedPropertyTracker(UObject* Obj);
1877
1879 virtual bool ShouldClientDestroyTearOffActors() const { return false; }
1880
1882 ENGINE_API virtual bool ShouldSkipRepNotifies() const;
1883
1885 virtual bool ShouldQueueBunchesForActorGUID(FNetworkGUID InGUID) const { return false; }
1886
1888 virtual bool ShouldIgnoreRPCs() const { return false; }
1889
1891 virtual FNetworkGUID GetGUIDForActor(const AActor* InActor) const { return FNetworkGUID(); }
1892
1894 virtual AActor* GetActorForGUID(FNetworkGUID InGUID) const { return nullptr; }
1895
1897 virtual bool ShouldReceiveRepNotifiesForObject(UObject* Object) const { return true; }
1898
1900 FNetworkObjectList& GetNetworkObjectList() { return *NetworkObjects; }
1901
1903 const FNetworkObjectList& GetNetworkObjectList() const { return *NetworkObjects; }
1904
1909 UE_DEPRECATED(5.3, "Will be made private in a future release")
1910 ENGINE_API FNetworkObjectInfo* FindOrAddNetworkObjectInfo(const AActor* InActor);
1911
1914 ENGINE_API FNetworkObjectInfo* FindNetworkObjectInfo(const AActor* InActor);
1915
1917 const FNetworkObjectInfo* FindNetworkObjectInfo(const AActor* InActor) const
1918 {
1920 return const_cast<UNetDriver*>(this)->FindNetworkObjectInfo(InActor);
1922 }
1923
1928 ENGINE_API static bool IsAdaptiveNetUpdateFrequencyEnabled();
1929
1931 ENGINE_API bool IsNetworkActorUpdateFrequencyThrottled(const AActor* InActor) const;
1932
1934 UE_DEPRECATED(5.3, "Will be made private in a future release, please use version that takes an actor")
1935 ENGINE_API bool IsNetworkActorUpdateFrequencyThrottled(const FNetworkObjectInfo& InNetworkActor) const;
1936
1938 UE_DEPRECATED(5.3, "Will be made private in a future release, please use version that takes an actor")
1939 ENGINE_API void CancelAdaptiveReplication(FNetworkObjectInfo& InNetworkActor);
1940
1941 ENGINE_API void CancelAdaptiveReplication(const AActor* InActor);
1942
1944 ENGINE_API bool IsPendingNetUpdate(const AActor* InActor) const;
1945
1947 int32 GetDuplicateLevelID() const { return DuplicateLevelID; }
1948
1951
1953 ENGINE_API void SetReplicationDriver(UReplicationDriver* NewReplicationManager);
1954
1955 UReplicationDriver* GetReplicationDriver() const { return ReplicationDriver; }
1956
1958 inline bool IsUsingIrisReplication() const
1959 {
1960 return bIsUsingIris;
1961 }
1962
1964 ENGINE_API EEngineNetworkRuntimeFeatures GetNetworkRuntimeFeatures() const;
1965
1971 ENGINE_API void RestartIrisSystem();
1972
1974 ENGINE_API void DestroyIrisSystem();
1975
1977 ENGINE_API void RecreateIrisSystem();
1978
1979 template<class T>
1980 T* GetReplicationDriver() const { return Cast<T>(ReplicationDriver); }
1981
1982 inline UReplicationSystem* GetReplicationSystem() { return ReplicationSystem; }
1983 inline UReplicationSystem* GetReplicationSystem() const { return ReplicationSystem; }
1984
1985 void UpdateGroupFilterStatusForLevel(const ULevel* Level, UE::Net::FNetObjectGroupHandle LevelGroupHandle);
1986 void DisallowReplicationOfAllLevelGroupsForConnection(UE::Net::FConnectionHandle Handle);
1987 void UpdateGroupFilterStatusForAllLevelsForConnection(UE::Net::FConnectionHandle Handle);
1988 void UpdateGroupFilterStatusForAllLevelsForAllConnections();
1989
1991 const UE::Net::FNetTokenStore* GetNetTokenStore() const { return NetTokenStore.Get(); }
1992 UE::Net::FNetTokenStore* GetNetTokenStore() { return NetTokenStore.Get(); }
1993
1995
1996protected:
1998 ENGINE_API virtual bool ShouldUpdateStats() const;
1999
2001 ENGINE_API virtual bool ShouldRegisterMetricsDatabaseListeners() const;
2002
2003private:
2004 FOnNetTokenStoreReady OnNetTokenStoreReadyDelegate;
2005public:
2007 FOnNetTokenStoreReady::RegistrationType& OnNetTokenStoreReady()
2008 {
2009 return OnNetTokenStoreReadyDelegate;
2010 }
2011
2012
2013
2014 ENGINE_API void RemoveClientConnection(UNetConnection* ClientConnectionToRemove);
2015
2017 ENGINE_API void AddClientConnection(UNetConnection * NewConnection);
2018
2026 ENGINE_API void ForEachClientConnection(TFunction<bool(TObjectPtr<UNetConnection>)> Func);
2027
2028 //~ This method should only be called by internal networking systems.
2029 ENGINE_API void NotifyActorFullyDormantForConnection(AActor* Actor, UNetConnection* Connection);
2030
2032 ENGINE_API virtual bool IsLevelInitializedForActor( const AActor* InActor, const UNetConnection* InConnection ) const;
2033
2035 void NotifyRPCProcessed(UFunction* Function, UNetConnection* Connection, double ElapsedTimeSeconds);
2036
2038 ENGINE_API virtual bool ShouldReplicateFunction(AActor* Actor, UFunction* Function) const;
2039
2041 ENGINE_API virtual bool ShouldForwardFunction(AActor* Actor, UFunction* Function, void* Parms) const;
2042
2044 ENGINE_API virtual bool ShouldReplicateActor(AActor* Actor) const;
2045
2047 ENGINE_API virtual bool ShouldCallRemoteFunction(UObject* Object, UFunction* Function, const FReplicationFlags& RepFlags) const;
2048
2050 ENGINE_API virtual bool ShouldClientDestroyActor(AActor* Actor, EChannelCloseReason CloseReason = EChannelCloseReason::Destroyed) const;
2051
2053 ENGINE_API virtual void NotifyActorChannelOpen(UActorChannel* Channel, AActor* Actor);
2054
2056 ENGINE_API virtual void NotifyActorChannelCleanedUp(UActorChannel* Channel, EChannelCloseReason CloseReason);
2057
2058 ENGINE_API virtual void NotifyActorTornOff(AActor* Actor);
2059
2061 ENGINE_API virtual void ClientSetActorDormant(AActor* Actor);
2062
2064 ENGINE_API virtual void ClientSetActorTornOff(AActor* Actor);
2065
2071 ENGINE_API void ConsumeAsyncLoadDelinquencyAnalytics(FNetAsyncLoadDelinquencyAnalytics& Out);
2072
2074 ENGINE_API const FNetAsyncLoadDelinquencyAnalytics& GetAsyncLoadDelinquencyAnalytics() const;
2075
2077 ENGINE_API void ResetAsyncLoadDelinquencyAnalytics();
2078
2079 inline uint32 AllocateConnectionId() { return ConnectionIdHandler.Allocate(); }
2080 inline void FreeConnectionId(uint32 Id) { return ConnectionIdHandler.Free(Id); };
2081
2083 UE_DEPRECATED(5.6, "Use GetConnectionByHandle()")
2084 ENGINE_API UNetConnection* GetConnectionById(uint32 ParentConnectionId) const;
2085
2087 ENGINE_API UNetConnection* GetConnectionByHandle(UE::Net::FConnectionHandle ConnectionHandle) const;
2088
2090 inline uint32 GetNetTraceId() const { return NetTraceId; }
2091
2093 ENGINE_API bool CanCreateDestructionInfo() const;
2094
2096 ENGINE_API int64 SendDestructionInfo(UNetConnection* Connection, FActorDestructionInfo* DestructionInfo);
2097
2102 bool SendDestructionInfoForLevelUnloadIfDormant(AActor* ThisActor, UNetConnection* Connection);
2103
2115 ENGINE_API UE::Net::FNetIDVariant CreateNetIDForObject(UObject* Object);
2116
2125 ENGINE_API void AssignNetIDToObject(UE::Net::FNetIDVariant NetID, const UObject* Object);
2126
2127protected:
2128
2129 void SetIsInTick(bool bIsInTick) { bInTick = bIsInTick; }
2130
2132 ENGINE_API void RegisterTickEvents(class UWorld* InWorld);
2134 ENGINE_API void UnregisterTickEvents(class UWorld* InWorld);
2135
2136private:
2137 void InternalTickDispatch(float DeltaSeconds);
2138 void InternalTickFlush(float DeltaSeconds);
2139
2140protected:
2142 ENGINE_API virtual UChannel* InternalCreateChannelByName(const FName& ChName);
2143
2145 void UpdateNetworkStats();
2146
2147private:
2149 void ResetNetConnectionStats();
2150
2151protected:
2152
2153#if WITH_SERVER_CODE
2157 int32 ServerReplicateActors_PrepConnections( const float DeltaSeconds );
2159
2160 // Actor prioritization
2162
2163 UE_DEPRECATED(5.3, "This function has been deprecated. Please use ServerReplicateActors_ProcessPrioritizedActorsRange instead")
2165
2166 // Actor relevancy processing within specified range
2168
2169 // Relevant actors that could not be processed this frame are marked to be considered for next frame
2171
2178
2184
2191#endif
2192
2194 ENGINE_API virtual void OnLevelRemovedFromWorld(class ULevel* Level, class UWorld* World);
2195
2197 ENGINE_API virtual void OnLevelAddedToWorld(class ULevel* Level, class UWorld* World);
2198
2202
2203
2204public:
2205
2214 const bool MaySendProperties() const
2215 {
2216 return bMaySendProperties;
2217 }
2218
2222 uint32 GetOutTotalNotifiedPackets() const { return OutTotalNotifiedPackets; }
2223
2227 inline void IncreaseOutTotalNotifiedPackets() { ++OutTotalNotifiedPackets; }
2228
2235 {
2236 return TotalOutOfOrderPacketsLost + TotalOutOfOrderPacketsRecovered + TotalOutOfOrderPacketsDuplicate;
2237 }
2238
2245 {
2246 return TotalOutOfOrderPacketsLost;
2247 }
2248
2255 {
2256 TotalOutOfOrderPacketsLost += Count;
2257 }
2258
2265 {
2266 return TotalOutOfOrderPacketsRecovered;
2267 }
2268
2275 {
2276 TotalOutOfOrderPacketsRecovered += Count;
2277 }
2278
2285 {
2286 return TotalOutOfOrderPacketsDuplicate;
2287 }
2288
2295 {
2296 TotalOutOfOrderPacketsDuplicate += Count;
2297 }
2298
2300 {
2301 return CachedGlobalNetTravelCount;
2302 }
2303
2304 bool DidHitchLastFrame() const;
2305
2306 static bool IsDormInitialStartupActor(AActor* Actor);
2307
2309 void MoveMappedObjectToUnmapped(const UObject* Object);
2310
2312 bool HasReplayConnection() const { return bHasReplayConnection; }
2313
2319 virtual bool DoesSupportEncryption() const
2320 {
2321 return true;
2322 }
2323
2329 ENGINE_API virtual bool IsEncryptionRequired() const;
2330
2332 ENGINE_API float GetIncomingBunchFrameProcessingTimeLimit() const;
2333
2335 ENGINE_API bool HasExceededIncomingBunchFrameProcessingTime() const;
2336
2338 void AddBunchProcessingFrameTimeMS(float Milliseconds) { IncomingBunchProcessingElapsedFrameTimeMS += Milliseconds; }
2339
2341 void AddQueuedBunchFailsafeChannel() { ++QueuedBunchFailsafeNumChannels; }
2342
2345 {
2346 bReplicateTransactionally = bInReplicateTransactionally;
2347 }
2348
2349#if UE_WITH_REMOTE_OBJECT_HANDLE
2351 bool ShouldReplicateTransactionally() const
2352 {
2353 return bReplicateTransactionally;
2354 }
2355#else
2357 constexpr bool ShouldReplicateTransactionally() const
2358 {
2359 return false;
2360 }
2361#endif
2362
2364 {
2365 bDeferTransactionalSend = bInDeferTransactionalSend;
2366 }
2367
2369 {
2370 return bDeferTransactionalSend;
2371 }
2372
2374 bool IsUsingRemoteObjectReferences() const { return bUseRemoteObjectRefs; }
2375
2378 {
2379 bUseRemoteObjectRefs = bValue;
2380 }
2381
2384 {
2385 bSupportNoPawnConnection = bInSupportNoPawnConnection;
2386 }
2387
2389 bool HasSupportForNoPawnConnection();
2390
2392 TObjectPtr<UNetConnection> FindConnection(struct FUniqueNetIdRepl& PlayerId);
2393
2399 {
2400 return bSendImmediateAcks;
2401 }
2402
2403protected:
2404
2407
2409 void NotifyGameInstanceUpdated();
2410
2412 bool bTickingThrottleEnabled = true;
2413private:
2414 // Only for ForwardRemoteFunction
2415 friend FObjectReplicator;
2416
2417 ENGINE_API virtual ECreateReplicationChangelistMgrFlags GetCreateReplicationChangelistMgrFlags() const;
2418
2419 FDelegateHandle PostGarbageCollectHandle;
2420 void PostGarbageCollect();
2421
2422 FActorDestructionInfo* CreateDestructionInfo(AActor* ThisActor, FActorDestructionInfo *DestructionInfo);
2423
2424 void CreateReplicatedStaticActorDestructionInfo(ULevel* Level, const FReplicatedStaticActorDestructionInfo& Info);
2425
2426 void FlushActorDormancyInternal(AActor *Actor);
2427
2428 void LoadChannelDefinitions();
2429
2431 void ReportSyncLoad(const FNetSyncLoadReport& Report);
2432
2433 enum class ECrashContextUpdate
2434 {
2435 Default,
2436 UpdateRepModel,
2437 ClearRepModel,
2438 };
2439 void UpdateCrashContext(ECrashContextUpdate UpdateType=ECrashContextUpdate::Default);
2440
2441 void RemoveDestroyedGuidsByLevel(const ULevel* Level, const TArray<FNetworkGUID>& RemovedGUIDs);
2442
2444 void ServerReplicateActors_ForConnection(UE::Net::FServerReplicateActors_ForConnectionParams& Params);
2445
2447 FDelegateHandle ReportSyncLoadDelegateHandle;
2448
2449 void InitIrisSettings(FName NewDriverName);
2450 void SetReplicationSystem(UReplicationSystem* ReplicationSystem);
2451 void CreateReplicationSystem(bool bInitAsClient);
2452 void UpdateIrisReplicationViews() const;
2453 void SendClientMoveAdjustments();
2454 void PostDispatchSendUpdate();
2455
2457 void SendNetAnalytics();
2458
2460 FString GetReplicationModelName() const;
2461
2462 void InitNetTraceId();
2463
2464protected:
2466 ENGINE_API virtual void ForwardRemoteFunction(UObject* RootObject, UObject* SubObject, UFunction* Function, void* Parms);
2467
2469 void EvaluateNoTimeouts();
2470
2471private:
2473 void UpdateUnmappedObjects();
2474
2476 void CleanupStaleDormantReplicators();
2477
2478private:
2479
2481 TObjectPtr<UReplicationDriver> ReplicationDriver;
2482
2484
2485 UReplicationSystem* ReplicationSystem = nullptr;
2486
2488 bool bSkipStartReplicatingWorldForIris = false;
2489
2491 bool bIsUsingIris = false;
2492
2493 // For FindOrAddNetworkObjectInfo
2494 TPimplPtr<FNetworkObjectInfo> DummyNetworkObjectInfo;
2495
2497 TSharedPtr<FNetworkObjectList> NetworkObjects;
2498
2500 TArray<FNetworkObjectInfo*> CurrentConsiderList;
2501
2503 ENetworkLagState::Type LagState;
2504
2506 int32 DuplicateLevelID;
2507
2509 double PacketLossBurstEndTime;
2510
2512 uint32 OutTotalNotifiedPackets;
2513
2515 FNetConnectionIdHandler ConnectionIdHandler;
2516
2518 uint32 NetTraceId;
2519
2521 int32 TotalOutOfOrderPacketsLost = 0;
2522
2524 int32 TotalOutOfOrderPacketsRecovered = 0;
2525
2527 int32 TotalOutOfOrderPacketsDuplicate = 0;
2528
2530 uint32 CachedGlobalNetTravelCount = 0;
2531
2533 uint32 StatUpdateFrames = 0;
2534
2536 float IncomingBunchProcessingElapsedFrameTimeMS = 0.0f;
2537
2539 uint32 NumFramesOverIncomingBunchTimeLimit = 0;
2540
2542 uint32 QueuedBunchFailsafeNumChannels = 0;
2543
2545 bool bReplicateTransactionally = true;
2546
2548 bool bUseRemoteObjectRefs = false;
2549
2551 bool bDeferTransactionalSend = true;
2552
2554 bool bSupportNoPawnConnection = false;
2555
2562 UPROPERTY(Config)
2563 bool bSendImmediateAcks = true;
2564};
#define NULL
Definition oodle2base.h:134
#define GLog
Definition CoreGlobals.h:95
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
EChannelCloseReason
Definition CoreNetTypes.h:49
#define TEXT(x)
Definition Platform.h:1272
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 DECLARE_DELEGATE_RetVal(ReturnValueType, DelegateName)
Definition DelegateCombinations.h:41
#define DECLARE_DELEGATE_SevenParams(DelegateName, Param1Type, Param2Type, Param3Type, Param4Type, Param5Type, Param6Type, Param7Type)
Definition DelegateCombinations.h:102
#define DECLARE_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:66
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
ENetMode
Definition EngineBaseTypes.h:937
ENetDormancy
Definition EngineTypes.h:3361
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
return true
Definition ExternalRpcRegistry.cpp:601
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define LLM_DECLARE_TAG_API(...)
Definition LowLevelMemTracker.h:1117
EProcessRemoteFunctionFlags
Definition NetDriver.h:790
ENGINE_API bool GReplicateActorTimingEnabled
Definition DataChannel.cpp:3564
ENGINE_API int32 GNumSaturatedConnections
Definition NetDriver.cpp:179
ENGINE_API double GReplicationGatherPrioritizeTimeSeconds
Definition NetDriver.cpp:5942
ENGINE_API TAutoConsoleVariable< int32 > CVarNetAllowEncryption
ENGINE_API bool GReceiveRPCTimingEnabled
Definition DataReplication.cpp:1264
ENGINE_API int32 GNumClientConnections
Definition NetDriver.cpp:5945
ENGINE_API int32 GNumSharedSerializationMiss
Definition NetDriver.cpp:181
ENGINE_API int32 GNumClientUpdateLevelVisibility
Definition NetDriver.cpp:5946
ENGINE_API uint32 GNetOutBytes
Definition NetConnection.cpp:2336
ENGINE_API int32 GNumReplicateActorCalls
Definition DataChannel.cpp:3566
ENGINE_API int32 GNumSharedSerializationHit
Definition NetDriver.cpp:180
ENGINE_API double GReplicateActorTimeSeconds
Definition DataChannel.cpp:3565
ENGINE_API double GServerReplicateActorTimeSeconds
Definition NetDriver.cpp:5943
EEngineNetworkRuntimeFeatures
Definition NetworkVersion.h:45
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
ECreateReplicationChangelistMgrFlags
Definition RepLayout.h:1047
@ Milliseconds
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Engine.Build.cs:7
Definition Archive.h:1208
Definition CoreNet.h:161
Definition CoreNet.h:91
Definition DDoSDetection.h:173
Definition ContainerAllocationPolicies.h:1660
Definition IDelegateInstance.h:14
Definition Exec.h:29
Definition CoreNet.h:73
Definition IPAddress.h:22
Definition NameTypes.h:617
Definition NetAnalytics.h:324
Definition NetConnectionIdHandler.h:9
Definition PackageMapClient.h:195
Definition NetworkGuid.h:12
Definition NetworkDelegates.h:56
Definition NetworkObjectList.h:143
Definition UObjectGlobals.h:1292
static COREUOBJECT_API FObjectInitializer & Get()
Definition UObjectGlobals.cpp:5001
Definition UnrealType.h:3087
Definition DataReplication.h:74
Definition OutputDevice.h:133
Definition UnrealType.h:174
Definition UObjectGlobals.h:2492
Definition RepChangedPropertyTracker.h:23
Definition RepLayout.h:1174
Definition RepLayout.h:502
Definition ObjectMacros.h:180
Definition VoiceDataCommon.h:26
Definition IAnalyticsProvider.h:52
Definition SocketSubsystem.h:58
Definition PacketHandler.Build.cs:7
Definition StatelessConnectHandlerComponent.h:119
Definition Array.h:670
Definition IConsoleManager.h:1792
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition SharedPointer.h:1295
Definition ActorChannel.h:78
Definition Channel.h:63
Definition ChildConnection.h:28
Definition Class.h:3793
Definition ConnectionHandle.h:17
Definition NetIDVariant.h:20
Definition NetObjectGroupHandle.h:22
Definition NetTokenStore.h:189
UE_NONCOPYABLE(FScopedIgnoreStaticActorDestruction)
~FScopedIgnoreStaticActorDestruction()
Definition NetDriver.cpp:409
FScopedIgnoreStaticActorDestruction()
Definition NetDriver.cpp:403
Definition Class.h:2476
Definition Level.h:423
Definition NetConnection.h:284
Definition NetDriver.h:799
uint32 GetCachedGlobalNetTravelCount() const
Definition NetDriver.h:2299
int32 GetMaxChannelsOverride() const
Definition NetDriver.h:1101
TMap< FNetworkGUID, TUniquePtr< FActorDestructionInfo > > DestroyedStartupOrDormantActors
Definition NetDriver.h:1345
void ResetElapsedTime()
Definition NetDriver.h:1135
const UE::Net::FNetTokenStore * GetNetTokenStore() const
Definition NetDriver.h:1991
virtual class ISocketSubsystem * GetSocketSubsystem() PURE_VIRTUAL(UNetDriver
Definition NetDriver.h:1841
UReplicationSystem * GetReplicationSystem()
Definition NetDriver.h:1982
TMap< FName, FName > RenamedStartupActors
Definition NetDriver.h:1376
bool IsInTick() const
Definition NetDriver.h:1141
uint32 ReplicationFrame
Definition NetDriver.h:1379
T * GetReplicationDriver() const
Definition NetDriver.h:1980
void IncreaseTotalOutOfOrderPacketsRecovered(int32 Count=1)
Definition NetDriver.h:2274
FRandomStream UpdateDelayRandomStream
Definition NetDriver.h:2406
virtual bool ShouldIgnoreRPCs() const
Definition NetDriver.h:1888
FDelegateHandle TickDispatchDelegateHandle
Definition NetDriver.h:1407
FDelegateHandle OnLevelRemovedFromWorldHandle
Definition NetDriver.h:2200
TSharedPtr< FInternetAddr > LocalAddr
Definition NetDriver.h:1427
TArray< TWeakObjectPtr< AActor > > LastNonRelevantActors
Definition NetDriver.h:1334
void IncreaseTotalOutOfOrderPacketsLost(int32 Count=1)
Definition NetDriver.h:2254
virtual bool ShouldQueueBunchesForActorGUID(FNetworkGUID InGUID) const
Definition NetDriver.h:1885
virtual bool ShouldReceiveRepNotifiesForObject(UObject *Object) const
Definition NetDriver.h:1897
void AddQueuedBunchFailsafeChannel()
Definition NetDriver.h:2341
FDelegateHandle OnLevelAddedToWorldHandle
Definition NetDriver.h:2201
bool IsUsingRemoteObjectReferences() const
Definition NetDriver.h:2374
FDelegateHandle PostTickFlushDelegateHandle
Definition NetDriver.h:1410
FDelegateHandle PostTickDispatchDelegateHandle
Definition NetDriver.h:1408
uint32 AllocateConnectionId()
Definition NetDriver.h:2079
FNetworkObjectList & GetNetworkObjectList()
Definition NetDriver.h:1900
TMap< TWeakObjectPtr< UObject >, TSharedPtr< FRepLayout >, FDefaultSetAllocator, TWeakObjectPtrMapKeyFuncs< TWeakObjectPtr< UObject >, TSharedPtr< FRepLayout > > > RepLayoutMap
Definition NetDriver.h:1382
uint8 bSkipServerReplicateActors
Definition NetDriver.h:1200
bool GetPendingDestruction() const
Definition NetDriver.h:1144
const FNetworkObjectList & GetNetworkObjectList() const
Definition NetDriver.h:1903
class FNetworkNotify * Notify
Definition NetDriver.h:1132
FOnNetTokenStoreReady::RegistrationType & OnNetTokenStoreReady()
Definition NetDriver.h:2007
void SetDeferTransactionalSend(bool bInDeferTransactionalSend)
Definition NetDriver.h:2363
FPacketSimulationSettings PacketSimulationSettings
Definition NetDriver.h:1439
FOnNetServerMaxTickRateChanged OnNetServerMaxTickRateChanged
Definition NetDriver.h:888
void SetUsingRemoteObjectReferences(bool bValue)
Definition NetDriver.h:2377
virtual bool CanDowngradeActorRole(UNetConnection *Connection, AActor *Actor) const
Definition NetDriver.h:1492
ENGINE_API void SetPacketSimulationSettings(const FPacketSimulationSettings &NewSettings)
void AddBunchProcessingFrameTimeMS(float Milliseconds)
Definition NetDriver.h:2338
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnNetServerMaxTickRateChanged, UNetDriver *, int32, int32)
TArray< TWeakObjectPtr< AActor > > LastRelevantActors
Definition NetDriver.h:1332
class UPackage * GetWorldPackage() const
Definition NetDriver.h:1856
UReplicationSystem * GetReplicationSystem() const
Definition NetDriver.h:1983
TArray< TWeakObjectPtr< AActor > > LastPrioritizedActors
Definition NetDriver.h:1331
UE::Net::FNetTokenStore * GetNetTokenStore()
Definition NetDriver.h:1992
FShouldSkipRepNotifies SkipRepNotifiesDel
Definition NetDriver.h:1417
bool IsUsingIrisReplication() const
Definition NetDriver.h:1958
DECLARE_MULTICAST_DELEGATE_OneParam(FOnNetTokenStoreReady, UNetDriver *)
void IncreaseOutTotalNotifiedPackets()
Definition NetDriver.h:2227
virtual AActor * GetActorForGUID(FNetworkGUID InGUID) const
Definition NetDriver.h:1894
bool DebugRelevantActors
Definition NetDriver.h:1328
virtual FNetworkGUID GetGUIDForActor(const AActor *InActor) const
Definition NetDriver.h:1891
float ProcessQueuedBunchesCurrentFrameMilliseconds
Definition NetDriver.h:1421
bool HasReplayConnection() const
Definition NetDriver.h:2312
void PrintDebugRelevantActors()
virtual bool IsNetResourceValid(void) PURE_VIRTUAL(UNetDriver
Definition NetDriver.h:1862
virtual bool DoesSupportEncryption() const
Definition NetDriver.h:2319
FName GetNetDriverDefinition() const
Definition NetDriver.h:1116
void SetIsInTick(bool bIsInTick)
Definition NetDriver.h:2129
int32 GetTotalOutOfOrderPacketsDuplicate() const
Definition NetDriver.h:2284
TSet< FObjectReplicator * > UnmappedReplicators
Definition NetDriver.h:1403
FDDoSDetection DDoS
Definition NetDriver.h:1424
TObjectPtr< UNetworkMetricsDatabase > GetMetrics()
Definition NetDriver.h:1619
const bool MaySendProperties() const
Definition NetDriver.h:2214
TSet< FObjectReplicator * > AllOwnedReplicators
Definition NetDriver.h:1404
void SetReplicateTransactionally(bool bInReplicateTransactionally)
Definition NetDriver.h:2344
void SetSupportForNoPawnConnection(bool bInSupportNoPawnConnection)
Definition NetDriver.h:2383
constexpr bool ShouldReplicateTransactionally() const
Definition NetDriver.h:2357
FOnSendRPC SendRPCDel
Definition NetDriver.h:1414
FDelegateHandle TickFlushDelegateHandle
Definition NetDriver.h:1409
int32 GetTotalOutOfOrderPackets() const
Definition NetDriver.h:2234
ENGINE_API void OnPacketSimulationSettingsChanged()
void FreeConnectionId(uint32 Id)
Definition NetDriver.h:2080
virtual bool ShouldClientDestroyTearOffActors() const
Definition NetDriver.h:1879
bool IsSendingImmediateAcks() const
Definition NetDriver.h:2398
ERemoteFunctionSendPolicy
Definition NetDriver.h:1622
TArray< TWeakObjectPtr< AActor > > LastSentActors
Definition NetDriver.h:1333
TMap< FNetworkGUID, TSet< FObjectReplicator * > > GuidToReplicatorMap
Definition NetDriver.h:1401
TSharedPtr< class FNetGUIDCache > & GetNetGuidCache()
Definition NetDriver.h:1167
virtual ENGINE_API ~UNetDriver()
int32 TotalTrackedGuidMemoryBytes
Definition NetDriver.h:1402
bool IsSimulatingPacketLossBurst() const
uint8 bSkipClearVoicePackets
Definition NetDriver.h:1202
const TSet< FNetworkGUID > & GetDestroyedStartupOrDormantActors(const FName &LevelName)
Definition NetDriver.h:1360
double GetElapsedTime() const
Definition NetDriver.h:1134
int32 GetTotalOutOfOrderPacketsRecovered() const
Definition NetDriver.h:2264
bool ShouldDeferTransactionalSend() const
Definition NetDriver.h:2368
void IncreaseTotalOutOfOrderPacketsDuplicate(int32 Count=1)
Definition NetDriver.h:2294
void SetNetAnalyticsAttributes(const FString &AttributeKey, const FString &AttributeValue)
Definition NetDriver.h:1371
uint8 bMaySendProperties
Definition NetDriver.h:1198
uint32 GetOutTotalNotifiedPackets() const
Definition NetDriver.h:2222
int32 GetTotalOutOfOrderPacketsLost() const
Definition NetDriver.h:2244
UReplicationDriver * GetReplicationDriver() const
Definition NetDriver.h:1955
void SetDuplicateLevelID(const int32 InDuplicateLevelID)
Definition NetDriver.h:1950
Definition NetworkMetricsDatabase.h:156
Definition NetworkMetricsDatabase.h:41
Definition Object.h:95
Definition Package.h:216
Definition ReplicationDriver.h:49
Definition ReplicationSystem.h:70
Definition Class.h:480
Definition World.h:918
Type
Definition EngineBaseTypes.h:631
Definition NetworkVersion.cpp:28
Definition NetworkVersion.cpp:28
ENGINE_API uint32 CountReplicatedSubObjectsOfActor(AActor *ReplicatedActor)
Definition NetDriver.cpp:419
bool ShouldIgnoreStaticActorDestruction()
Definition NetDriver.cpp:414
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition NetDriver.h:435
UNetConnection * Connection
Definition NetDriver.h:437
float DeltaSeconds
Definition NetDriver.h:436
bool bCPUSaturated
Definition NetDriver.h:438
Definition NetDriver.h:630
FActorDestructionInfo()
Definition NetDriver.h:632
bool bIgnoreDistanceCulling
Definition NetDriver.h:646
FVector DestroyedPosition
Definition NetDriver.h:639
TWeakObjectPtr< ULevel > Level
Definition NetDriver.h:637
FName StreamingLevelName
Definition NetDriver.h:642
FNetworkGUID NetGUID
Definition NetDriver.h:640
void CountBytes(FArchive &Ar)
Definition NetDriver.h:648
TWeakObjectPtr< UObject > ObjOuter
Definition NetDriver.h:638
FString PathName
Definition NetDriver.h:641
EChannelCloseReason Reason
Definition NetDriver.h:643
Definition NetDriver.h:700
int32 Priority
Definition NetDriver.h:701
FActorDestructionInfo * DestructionInfo
Definition NetDriver.h:706
FNetworkObjectInfo * ActorInfo
Definition NetDriver.h:703
UActorChannel * Channel
Definition NetDriver.h:704
FActorPriority()
Definition NetDriver.h:708
Definition NetDriver.h:727
Definition NetDriver.h:717
bool operator()(const FActorPriority &A, const FActorPriority &B) const
Definition NetDriver.h:718
Definition NetDriver.h:775
FDisconnectedClient(TSharedRef< const FInternetAddr > &InAddress, double InDisconnectTime)
Definition NetDriver.h:782
TSharedRef< const FInternetAddr > Address
Definition NetDriver.h:777
double DisconnectTime
Definition NetDriver.h:780
Definition Stack.h:114
Definition IPAddress.h:221
Definition NetAnalyticsTypes.h:133
Definition NetDriver.h:657
Definition NetworkDelegates.h:214
Definition WorldSettings.h:244
Definition NetworkObjectList.h:35
Definition PacketTraits.h:21
Definition Stack.h:103
Definition NetDriver.h:455
Definition RandomStream.h:20
Definition EngineTypes.h:3601
Definition EngineBaseTypes.h:799
Definition OnlineReplStructs.h:26
Definition Interval.h:33
Definition ObjectPtr.h:488
Definition PimplPtr.h:50
Definition WeakObjectPtrTemplates.h:415
Definition WeakObjectPtrTemplates.h:25