UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MessageEndpointBuilder.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "IMessageBus.h"
8#include "IMessageHandler.h"
9#include "IMessagingModule.h"
10#include "MessageEndpoint.h"
11#include "MessageHandlers.h"
12
13
18{
19public:
20
30 : BusPtr(IMessagingModule::Get().GetDefaultBus())
31 , Disabled(false)
32 , InboxEnabled(false)
33 , Name(InName)
34 , RecipientThread(FTaskGraphInterface::Get().GetCurrentThreadIfKnown())
35 { }
36
44 : BusPtr(InBus)
45 , Disabled(false)
46 , InboxEnabled(false)
47 , Name(InName)
48 , RecipientThread(FTaskGraphInterface::Get().GetCurrentThreadIfKnown())
49 { }
50
51public:
52
68 template<typename MessageType, typename HandlerType>
75
90 template<typename MessageType>
97
99 {
100 OnNotification = MoveTemp(InHandler);
101 return *this;
102 }
103
120 {
121 RecipientThread = ENamedThreads::AnyThread;
122
123 return *this;
124 }
125
139 {
140 RecipientThread = NamedThread;
141
142 return *this;
143 }
144
151 {
152 Disabled = true;
153
154 return *this;
155 }
156
172 template<typename HandlerType>
179
200
212 {
213 Handlers.Add(Handler);
214
215 return *this;
216 }
217
226 {
227 InboxEnabled = true;
228
229 return *this;
230 }
231
232public:
233
240 {
243
244 if (Bus.IsValid())
245 {
246 Endpoint = MakeShared<FMessageEndpoint, ESPMode::ThreadSafe>(Name, Bus.ToSharedRef(), Handlers, OnNotification);
247 Bus->Register(Endpoint->GetAddress(), Endpoint.ToSharedRef());
248
249 if (OnNotification.IsBound())
250 {
251 Bus->AddNotificationListener(Endpoint.ToSharedRef());
252 }
253
254 if (Disabled)
255 {
256 Endpoint->Disable();
257 }
258
259 if (InboxEnabled)
260 {
261 Endpoint->EnableInbox();
262 Endpoint->SetRecipientThread(ENamedThreads::AnyThread);
263 }
264 else
265 {
266 Endpoint->SetRecipientThread(RecipientThread);
267 }
268 }
269
270 return Endpoint;
271 }
272
279 {
280 return Build();
281 }
282
283private:
284
287
289 bool Disabled;
290
292 FOnBusNotification OnNotification;
293
296
298 bool InboxEnabled;
299
301 FName Name;
302
304 ENamedThreads::Type RecipientThread;
305};
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition MessageHandlers.h:122
Definition NameTypes.h:617
Definition TaskGraphInterfaces.h:265
Definition IMessagingModule.h:27
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition MessageHandlers.h:166
Definition MessageHandlers.h:18
Definition MessageHandlers.h:70
Definition SharedPointer.h:692
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
UE_FORCEINLINE_HINT TSharedPtr< ObjectType, Mode > Pin() const &
Definition SharedPointer.h:1512
Type
Definition TaskGraphInterfaces.h:57
@ AnyThread
Definition TaskGraphInterfaces.h:67
@ false
Definition radaudio_common.h:23
Definition MessageEndpointBuilder.h:18
FMessageEndpointBuilder & WithCatchall(FFunctionMessageCatchall::FuncType HandlerFunc)
Definition MessageEndpointBuilder.h:194
FMessageEndpointBuilder & WithInbox()
Definition MessageEndpointBuilder.h:225
FMessageEndpointBuilder(const FName &InName, const TSharedRef< IMessageBus, ESPMode::ThreadSafe > &InBus)
Definition MessageEndpointBuilder.h:43
FMessageEndpointBuilder & WithCatchall(HandlerType *Handler, typename TRawMessageCatchall< HandlerType >::FuncType HandlerFunc)
Definition MessageEndpointBuilder.h:173
FMessageEndpointBuilder & Handling(HandlerType *Handler, typename TRawMessageHandler< MessageType, HandlerType >::FuncType HandlerFunc)
Definition MessageEndpointBuilder.h:69
FMessageEndpointBuilder & ReceivingOnAnyThread()
Definition MessageEndpointBuilder.h:119
FMessageEndpointBuilder & Handling(typename TFunctionMessageHandler< MessageType >::FuncType HandlerFunc)
Definition MessageEndpointBuilder.h:91
FMessageEndpointBuilder & ThatIsDisabled()
Definition MessageEndpointBuilder.h:150
FMessageEndpointBuilder & WithHandler(const TSharedRef< IMessageHandler, ESPMode::ThreadSafe > &Handler)
Definition MessageEndpointBuilder.h:211
FMessageEndpointBuilder(const FName &InName)
Definition MessageEndpointBuilder.h:29
TSharedPtr< FMessageEndpoint, ESPMode::ThreadSafe > Build()
Definition MessageEndpointBuilder.h:239
FMessageEndpointBuilder & NotificationHandling(FOnBusNotification &&InHandler)
Definition MessageEndpointBuilder.h:98
FMessageEndpointBuilder & ReceivingOnThread(ENamedThreads::Type NamedThread)
Definition MessageEndpointBuilder.h:138