UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetRPC.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
6
7namespace UE::Net
8{
9 class FNetRPCCallContext;
10}
11
12namespace UE::Net::Private
13{
14
15class FNetRPC final : public FNetObjectAttachment
16{
17public:
19 {
20 // Which ReplicationStateDescriptor in the Object's protocol the function information can be found
22 // Which index in to the MemberFunctionDescriptor array in the above ReplicationStateDescriptor contains the function information
24 };
25
27
28 static FNetRPC* Create(UReplicationSystem* ReplicationSystem, const FNetBlobCreationInfo& CreationInfo, const FNetObjectReference& ObjectReference, const UFunction* Function, const void* FunctionParameters);
29
31
33 const FFunctionLocator& GetFunctionLocator() const { return FunctionLocator; }
34
35private:
36 virtual ~FNetRPC();
37
38 virtual TArrayView<const FNetObjectReference> GetNetObjectReferenceExports() const override final;
39
40 virtual void SerializeWithObject(FNetSerializationContext& Context, FNetRefHandle RefHandle) const override;
41 virtual void DeserializeWithObject(FNetSerializationContext& Context, FNetRefHandle RefHandle) override;
42
45
46 void InternalSerializeHeader(FNetSerializationContext& Context, int32 PayloadSize=-1) const;
47 uint32 InternalDeserializeHeader(FNetSerializationContext& Context);
48
49 void SerializeFunctionLocator(FNetSerializationContext& Context) const;
50 void DeserializeFunctionLocator(FNetSerializationContext& Context);
51
52 void InternalSerializeObjectReference(FNetSerializationContext& Context) const;
53 void InternalDeserializeObjectReference(FNetSerializationContext& Context);
54
55 void InternalSerializeSubObjectReference(FNetSerializationContext& Context, FNetRefHandle RefHandle) const;
56 void InternalDeserializeSubObjectReference(FNetSerializationContext& Context, FNetRefHandle RefHandle);
57
58 void InternalSerializeBlob(FNetSerializationContext& Context) const;
59 void InternalDeserializeBlob(FNetSerializationContext& Context);
60
61 bool ResolveFunctionAndObject(FNetSerializationContext& Context);
62
63 bool IsServerAllowedToExecuteRPC(FNetSerializationContext& Context) const;
64
66
67 static constexpr uint32 HeaderSizeBitCount = 24U;
68 static constexpr uint32 MaxRpcSizeInBits = (1U << HeaderSizeBitCount) - 1U;
69
71 // If we have exports we normally expect the number to be low
72 typedef TArray<FNetObjectReference, TInlineAllocator<4>> FNetRPCExportsArray;
73
74 FFunctionLocator FunctionLocator;
75 const UFunction* Function;
76 TWeakObjectPtr<UObject> ObjectPtr;
77 TUniquePtr<FNetRPCExportsArray> ReferencesToExport;
78};
79
80}
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 CallFunction(Capability, ReturnValue, FunctionName,...)
Definition TypedElementQueryContextImplementation.inl:56
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ArrayView.h:139
Definition Array.h:670
Definition ContainerAllocationPolicies.h:894
Definition UniquePtr.h:107
FNetBlobCreationInfo CreationInfo
Definition NetBlob.h:172
Definition NetBlob.h:189
Definition NetObjectReference.h:38
Definition NetRPCHandler.h:13
Definition NetRefHandle.h:25
Definition NetSerializationContext.h:31
Definition NetRPC.h:16
void SetFunctionLocator(const FFunctionLocator &InfFunctionLocator)
Definition NetRPC.h:32
const FFunctionLocator & GetFunctionLocator() const
Definition NetRPC.h:33
Definition Class.h:2476
Definition Object.h:95
Definition ReplicationSystem.h:70
Definition NetworkVersion.cpp:28
Definition NetworkVersion.cpp:28
Definition WeakObjectPtrTemplates.h:25
Definition NetBlob.h:56
uint16 DescriptorIndex
Definition NetRPC.h:21
uint16 FunctionIndex
Definition NetRPC.h:23