UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MessageEndpoint.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "Containers/Array.h"
9#include "Containers/Queue.h"
10#include "IMessageAttachment.h"
11#include "IMessageBus.h"
12#include "IMessageContext.h"
13#include "IMessageHandler.h"
14#include "IMessageReceiver.h"
15#include "IMessageSender.h"
16#include "IMessageBusListener.h"
17#include "Misc/Guid.h"
19#include "UObject/NameTypes.h"
20#include "Misc/ScopeLock.h"
21
22
30
31
43
46
66 : public TSharedFromThis<FMessageEndpoint, ESPMode::ThreadSafe>
67 , public IMessageReceiver
68 , public IMessageSender
69 , public IBusListener
70{
71public:
72
82
91 : Address(FMessageAddress::NewAddress())
92 , BusPtr(InBus)
93 , Enabled(true)
94 , Handlers(InHandlers)
95 , NotificationDelegate(InNotificationDelegate)
96 , Id(FGuid::NewGuid())
97 , InboxEnabled(false)
98 , Name(InName)
99 {
100 SetRecipientThread(FTaskGraphInterface::Get().GetCurrentThreadIfKnown());
101 }
102
105 {
106 auto Bus = BusPtr.Pin();
107
108 if (Bus.IsValid())
109 {
110 Bus->Unregister(Address);
111 }
112 }
113
114public:
115
124 void Disable()
125 {
126 Enabled = false;
127 }
128
137 void Enable()
138 {
139 Enabled = true;
140 }
141
148 {
149 return Address;
150 }
151
158 bool IsConnected() const
159 {
160 return BusPtr.IsValid();
161 }
162
169 bool IsEnabled() const
170 {
171 return Enabled;
172 }
173
192
193public:
194
205 {
207
208 if (Bus.IsValid())
209 {
210 Bus->Forward(Context, TArrayBuilder<FMessageAddress>().Add(Address), Delay, AsShared());
211 }
212 }
213
224 {
226
227 if (Bus.IsValid())
228 {
229 Bus->Forward(Context, Recipients, Delay, AsShared());
230 }
231 }
232
243 void Publish(void* Message, UScriptStruct* TypeInfo, EMessageScope Scope, const FTimespan& Delay, const FDateTime& Expiration)
244 {
245 Publish(Message, TypeInfo, Scope, TMap<FName, FString>(), Delay, Expiration);
246 }
247
259 void Publish(void* Message, UScriptStruct* TypeInfo, EMessageScope Scope, const TMap<FName, FString> Annotations, const FTimespan& Delay, const FDateTime& Expiration)
260 {
262
263 if (Bus.IsValid())
264 {
265 Bus->Publish(Message, TypeInfo, Scope, Annotations, Delay, Expiration, AsShared());
266 }
267 }
268
279 UE_DEPRECATED(4.21, "FMessageEndpoint::Send with 6 params is deprecated. Please use FMessageEndpoint::Send that takes additionnal EMessageFlags instead!")
280 void Send(void* Message, UScriptStruct* TypeInfo, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay, const FDateTime& Expiration)
281 {
282 Send(Message, TypeInfo, EMessageFlags::None, Attachment, Recipients, Delay, Expiration);
283 }
284
297 void Send(void* Message, UScriptStruct* TypeInfo, EMessageFlags Flags, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay, const FDateTime& Expiration)
298 {
300
301 if (Bus.IsValid())
302 {
303 Bus->Send(Message, TypeInfo, Flags, TMap<FName, FString>(), Attachment, Recipients, Delay, Expiration, AsShared());
304 }
305 }
306
319 void Send(void* Message, UScriptStruct* TypeInfo, EMessageFlags Flags, const TMap<FName, FString> Annotations, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay, const FDateTime& Expiration)
320 {
322
323 if (Bus.IsValid())
324 {
325 Bus->Send(Message, TypeInfo, Flags, Annotations, Attachment, Recipients, Delay, Expiration, AsShared());
326 }
327 }
328
335 UE_DEPRECATED(5.1, "Types names are now represented by path names. Please use a version of this function that takes an FTopLevelAssetPath as MessageType.")
336 void Subscribe(const FName& MessageType, const FMessageScopeRange& ScopeRange)
337 {
338 Subscribe(UClass::TryConvertShortTypeNameToPathName<UStruct>(MessageType.ToString()), ScopeRange);
339 }
340
347 void Subscribe(const FTopLevelAssetPath& MessageType, const FMessageScopeRange& ScopeRange)
348 {
350
351 if (Bus.IsValid())
352 {
353 Bus->Subscribe(AsShared(), MessageType, ScopeRange);
354 }
355 }
356
363 UE_DEPRECATED(5.1, "Types names are now represented by path names. Please use a version of this function that takes an FTopLevelAssetPath as MessageType.")
364 void Unsubscribe(const FName& MessageType)
365 {
366 Unsubscribe(UClass::TryConvertShortTypeNameToPathName<UStruct>(MessageType.ToString()));
367 }
368
375 void Unsubscribe(const FTopLevelAssetPath& MessageType)
376 {
378
379 if (Bus.IsValid())
380 {
381 Bus->Unsubscribe(AsShared(), MessageType);
382 }
383 }
384
385public:
386
395 {
396 InboxEnabled = false;
397 }
398
409 {
410 InboxEnabled = true;
411 }
412
419 bool IsInboxEmpty() const
420 {
421 return Inbox.IsEmpty();
422 }
423
429 bool IsInboxEnabled() const
430 {
431 return InboxEnabled;
432 }
433
444 {
446
447 while (Inbox.Dequeue(Context))
448 {
449 ProcessMessage(Context.ToSharedRef());
450 }
451 }
452
468
469public:
470
471 //~ IMessageReceiver interface
472
473 virtual FName GetDebugName() const override
474 {
475 return Name;
476 }
477
478 virtual const FGuid& GetRecipientId() const override
479 {
480 return Id;
481 }
482
484 {
485 return RecipientThread;
486 }
487
488 virtual bool IsLocal() const override
489 {
490 return true;
491 }
492
494 {
495 if (!Enabled)
496 {
497 return;
498 }
499
500 if (InboxEnabled)
501 {
502 Inbox.Enqueue(Context);
503 }
504 else
505 {
507 }
508 }
509
510 //~ IBusListener interface
511
512 virtual ENamedThreads::Type GetListenerThread() const override
513 {
514 return RecipientThread;
515 }
516
518 {
519 if (!Enabled)
520 {
521 return;
522 }
523
524 NotificationDelegate.ExecuteIfBound(FMessageBusNotification{ InNotification, InAddress });
525 }
526
527public:
528
529 //~ IMessageSender interface
530
532 {
533 return Address;
534 }
535
537 {
538 ErrorDelegate.ExecuteIfBound(Context.Get(), Error);
539 }
540
541public:
542
550 template<typename T, typename... InArgTypes>
551 static T* MakeMessage(InArgTypes&&... Args)
552 {
553 void* Buffer = FMemory::Malloc(sizeof(T));
554
555 T* Message = new (Buffer) T(::Forward<InArgTypes>(Args)...);
556
557 return Message;
558 }
559
572
584 {
586 }
587
601
607 template<typename MessageType>
608 void Publish(MessageType* Message)
609 {
610 Publish(Message, MessageType::StaticStruct(), EMessageScope::Network, FTimespan::Zero(), FDateTime::MaxValue());
611 }
612
619 template<typename MessageType>
620 void Publish(MessageType* Message, EMessageScope Scope)
621 {
622 Publish(Message, MessageType::StaticStruct(), Scope, FTimespan::Zero(), FDateTime::MaxValue());
623 }
624
631 template<typename MessageType>
632 void Publish(MessageType* Message, const TMap<FName, FString> Annotations)
633 {
634 Publish(Message, MessageType::StaticStruct(), EMessageScope::Network, Annotations, FTimespan::Zero(), FDateTime::MaxValue());
635 }
636
644 template<typename MessageType>
645 void Publish(MessageType* Message, const TMap<FName, FString> Annotations, EMessageScope Scope)
646 {
647 Publish(Message, MessageType::StaticStruct(), Scope, Annotations, FTimespan::Zero(), FDateTime::MaxValue());
648 }
649
656 template<typename MessageType>
657 void Publish(MessageType* Message, const FTimespan& Delay)
658 {
659 Publish(Message, MessageType::StaticStruct(), EMessageScope::Network, Delay, FDateTime::MaxValue());
660 }
661
669 template<typename MessageType>
670 void Publish(MessageType* Message, EMessageScope Scope, const FTimespan& Delay)
671 {
672 Publish(Message, MessageType::StaticStruct(), Scope, Delay, FDateTime::MaxValue());
673 }
674
684 template<typename MessageType>
685 void Publish(MessageType* Message, EMessageScope Scope, const FTimespan& Delay, const FDateTime& Expiration)
686 {
687 Publish(Message, MessageType::StaticStruct(), Scope, Delay, Expiration);
688 }
689
700 template<typename MessageType>
701 void Publish(MessageType* Message, const TMap<FName, FString> Annotations, EMessageScope Scope, const FTimespan& Delay, const FDateTime& Expiration)
702 {
703 Publish(Message, MessageType::StaticStruct(), Scope, Annotations, Delay, Expiration);
704 }
705
713 template<typename MessageType>
714 void Send(MessageType* Message, const FMessageAddress& Recipient)
715 {
716 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, nullptr, TArrayBuilder<FMessageAddress>().Add(Recipient), FTimespan::Zero(), FDateTime::MaxValue());
717 }
718
727 template<typename MessageType>
728 void Send(MessageType* Message, const TMap<FName, FString> Annotations, const FMessageAddress& Recipient)
729 {
730 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, Annotations, nullptr, TArrayBuilder<FMessageAddress>().Add(Recipient), FTimespan::Zero(), FDateTime::MaxValue());
731 }
732
741 template<typename MessageType>
742 void Send(MessageType* Message, const FMessageAddress& Recipient, const FTimespan& Delay)
743 {
744 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, nullptr, TArrayBuilder<FMessageAddress>().Add(Recipient), Delay, FDateTime::MaxValue());
745 }
746
756 template<typename MessageType>
757 void Send(MessageType* Message, const FMessageAddress& Recipient, const FTimespan& Delay, const FDateTime& Expiration)
758 {
759 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, nullptr, TArrayBuilder<FMessageAddress>().Add(Recipient), Delay, Expiration);
760 }
761
770 template<typename MessageType>
771 void Send(MessageType* Message, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const FMessageAddress& Recipient)
772 {
773 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, Attachment, TArrayBuilder<FMessageAddress>().Add(Recipient), FTimespan::Zero(), FDateTime::MaxValue());
774 }
775
786 template<typename MessageType>
787 void Send(MessageType* Message, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const FMessageAddress& Recipient, const FDateTime& Expiration, const FTimespan& Delay)
788 {
789 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, Attachment, TArrayBuilder<FMessageAddress>().Add(Recipient), Delay, Expiration);
790 }
791
803 template<typename MessageType>
804 void Send(MessageType* Message, const TMap<FName, FString> Annotations, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const FMessageAddress& Recipient, const FDateTime& Expiration, const FTimespan& Delay)
805 {
806 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, Annotations, Attachment, TArrayBuilder<FMessageAddress>().Add(Recipient), Delay, Expiration);
807 }
808
816 template<typename MessageType>
817 void Send(MessageType* Message, const TArray<FMessageAddress>& Recipients)
818 {
819 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, nullptr, Recipients, FTimespan::Zero(), FDateTime::MaxValue());
820 }
821
830 template<typename MessageType>
831 void Send(MessageType* Message, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay)
832 {
833 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, nullptr, Recipients, Delay, FDateTime::MaxValue());
834 }
835
845 template<typename MessageType>
846 void Send(MessageType* Message, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay)
847 {
848 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, Attachment, Recipients, Delay, FDateTime::MaxValue());
849 }
850
861 template<typename MessageType>
862 void Send(MessageType* Message, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay, const FDateTime& Expiration)
863 {
864 Send(Message, MessageType::StaticStruct(), EMessageFlags::None, Attachment, Recipients, Delay, Expiration);
865 }
866
879 template<typename MessageType>
880 void Send(MessageType* Message, EMessageFlags Flags, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay, const FDateTime& Expiration)
881 {
882 Send(Message, MessageType::StaticStruct(), Flags, Attachment, Recipients, Delay, Expiration);
883 }
884
898 template<typename MessageType>
899 void Send(MessageType* Message, EMessageFlags Flags, const TMap<FName, FString> Annotations, const TSharedPtr<IMessageAttachment, ESPMode::ThreadSafe>& Attachment, const TArray<FMessageAddress>& Recipients, const FTimespan& Delay, const FDateTime& Expiration)
900 {
901 Send(Message, MessageType::StaticStruct(), Flags, Annotations, Attachment, Recipients, Delay, Expiration);
902 }
903
914 template<class MessageType>
916 {
917 Subscribe(MessageType::StaticStruct()->GetStructPathName(), FMessageScopeRange::AtLeast(EMessageScope::Thread));
918 }
919
929 template<class MessageType>
930 void Subscribe(const FMessageScopeRange& ScopeRange)
931 {
932 Subscribe(MessageType::StaticStruct()->GetStructPathName(), ScopeRange);
933 }
934
944
951 template<class MessageType>
953 {
954 Unsubscribe(MessageType::StaticStruct()->GetStructPathName());
955 }
956
957public:
958
971 {
972 if (Endpoint.IsValid())
973 {
974 Endpoint->ClearHandlers();
975 Endpoint.Reset();
976 }
977 }
978
979protected:
980
986 {
987 FScopeLock Lock(&HandlersCS);
988 Handlers.Empty();
989 }
990
997 {
998 if (Enabled)
999 {
1000 return BusPtr.Pin();
1001 }
1002
1003 return nullptr;
1004 }
1005
1012 {
1013 if (!Context->IsValid())
1014 {
1015 return;
1016 }
1017
1018 FScopeLock Lock(&HandlersCS);
1019
1020 for (int32 HandlerIndex = 0; HandlerIndex < Handlers.Num(); ++HandlerIndex)
1021 {
1022 Handlers[HandlerIndex]->HandleMessage(Context);
1023 }
1024 }
1025
1026private:
1027
1029 const FMessageAddress Address;
1030
1033
1035 bool Enabled;
1036
1039
1041 FOnBusNotification NotificationDelegate;
1042
1044 const FGuid Id;
1045
1048
1050 bool InboxEnabled;
1051
1053 const FName Name;
1054
1056 ENamedThreads::Type RecipientThread;
1057
1058private:
1059
1061 FOnMessageEndpointError ErrorDelegate;
1062
1064 FCriticalSection HandlersCS;
1065};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
return true
Definition ExternalRpcRegistry.cpp:601
EMessageBusNotification
Definition IMessageBusListener.h:10
EMessageFlags
Definition IMessageContext.h:186
EMessageScope
Definition IMessageContext.h:167
ESPMode
Definition SharedPointerFwd.h:12
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
Definition MessageEndpoint.h:70
bool IsEnabled() const
Definition MessageEndpoint.h:169
void Publish(MessageType *Message, const FTimespan &Delay)
Definition MessageEndpoint.h:657
void Unsubscribe()
Definition MessageEndpoint.h:940
void Publish(MessageType *Message, EMessageScope Scope, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:685
void Publish(MessageType *Message, const TMap< FName, FString > Annotations, EMessageScope Scope, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:701
virtual bool IsLocal() const override
Definition MessageEndpoint.h:488
virtual void NotifyMessageError(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context, const FString &Error) override
Definition MessageEndpoint.h:536
void DisableInbox()
Definition MessageEndpoint.h:394
void Defer(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context, const FTimespan &Delay)
Definition MessageEndpoint.h:204
void Publish(MessageType *Message, const TMap< FName, FString > Annotations)
Definition MessageEndpoint.h:632
void ProcessMessage(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context)
Definition MessageEndpoint.h:1011
void Unsubscribe()
Definition MessageEndpoint.h:952
void Send(MessageType *Message, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const FMessageAddress &Recipient, const FDateTime &Expiration, const FTimespan &Delay)
Definition MessageEndpoint.h:787
virtual FName GetDebugName() const override
Definition MessageEndpoint.h:473
void Publish(void *Message, UScriptStruct *TypeInfo, EMessageScope Scope, const TMap< FName, FString > Annotations, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:259
FMessageEndpoint(const FName &InName, const TSharedRef< IMessageBus, ESPMode::ThreadSafe > &InBus, const TArray< TSharedPtr< IMessageHandler, ESPMode::ThreadSafe > > &InHandlers, const FOnBusNotification InNotificationDelegate)
Definition MessageEndpoint.h:90
void Send(MessageType *Message, const TArray< FMessageAddress > &Recipients)
Definition MessageEndpoint.h:817
void Send(MessageType *Message, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay)
Definition MessageEndpoint.h:846
void Publish(MessageType *Message, EMessageScope Scope, const FTimespan &Delay)
Definition MessageEndpoint.h:670
bool IsConnected() const
Definition MessageEndpoint.h:158
void Send(MessageType *Message, const TMap< FName, FString > Annotations, const FMessageAddress &Recipient)
Definition MessageEndpoint.h:728
bool IsInboxEmpty() const
Definition MessageEndpoint.h:419
void Publish(void *Message, UScriptStruct *TypeInfo, EMessageScope Scope, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:243
void Enable()
Definition MessageEndpoint.h:137
static T * MakeMessage(InArgTypes &&... Args)
Definition MessageEndpoint.h:551
void EnableInbox()
Definition MessageEndpoint.h:408
void Send(MessageType *Message, const FMessageAddress &Recipient)
Definition MessageEndpoint.h:714
void Forward(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay)
Definition MessageEndpoint.h:223
virtual FMessageAddress GetSenderAddress() override
Definition MessageEndpoint.h:531
~FMessageEndpoint()
Definition MessageEndpoint.h:104
void Publish(MessageType *Message)
Definition MessageEndpoint.h:608
virtual ENamedThreads::Type GetListenerThread() const override
Definition MessageEndpoint.h:512
virtual ENamedThreads::Type GetRecipientThread() const override
Definition MessageEndpoint.h:483
TSharedPtr< IMessageBus, ESPMode::ThreadSafe > GetBusIfEnabled() const
Definition MessageEndpoint.h:996
void Send(MessageType *Message, const TMap< FName, FString > Annotations, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const FMessageAddress &Recipient, const FDateTime &Expiration, const FTimespan &Delay)
Definition MessageEndpoint.h:804
static void SafeRelease(TSharedPtr< FMessageEndpoint, ESPMode::ThreadSafe > &Endpoint)
Definition MessageEndpoint.h:970
void Send(MessageType *Message, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:862
virtual void ReceiveMessage(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context) override
Definition MessageEndpoint.h:493
virtual const FGuid & GetRecipientId() const override
Definition MessageEndpoint.h:478
void Send(MessageType *Message, const FMessageAddress &Recipient, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:757
void ClearHandlers()
Definition MessageEndpoint.h:985
void Send(MessageType *Message, EMessageFlags Flags, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:880
void SetRecipientThread(const ENamedThreads::Type &NamedThread)
Definition MessageEndpoint.h:188
void Forward(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context, const FMessageAddress &Recipient, const FTimespan &Delay)
Definition MessageEndpoint.h:583
void Publish(MessageType *Message, EMessageScope Scope)
Definition MessageEndpoint.h:620
void Disable()
Definition MessageEndpoint.h:124
bool ReceiveFromInbox(TSharedPtr< IMessageContext, ESPMode::ThreadSafe > &OutContext)
Definition MessageEndpoint.h:464
void Send(void *Message, UScriptStruct *TypeInfo, EMessageFlags Flags, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:297
bool IsInboxEnabled() const
Definition MessageEndpoint.h:429
void Subscribe(const FTopLevelAssetPath &MessageType, const FMessageScopeRange &ScopeRange)
Definition MessageEndpoint.h:347
void Send(MessageType *Message, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const FMessageAddress &Recipient)
Definition MessageEndpoint.h:771
void Unsubscribe(const FTopLevelAssetPath &MessageType)
Definition MessageEndpoint.h:375
void Forward(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context, const TArray< FMessageAddress > &Recipients)
Definition MessageEndpoint.h:597
void Subscribe(const FMessageScopeRange &ScopeRange)
Definition MessageEndpoint.h:930
void Send(MessageType *Message, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay)
Definition MessageEndpoint.h:831
void Send(void *Message, UScriptStruct *TypeInfo, EMessageFlags Flags, const TMap< FName, FString > Annotations, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:319
void ProcessInbox()
Definition MessageEndpoint.h:443
void Forward(const TSharedRef< IMessageContext, ESPMode::ThreadSafe > &Context, const FMessageAddress &Recipient)
Definition MessageEndpoint.h:568
const FMessageAddress & GetAddress() const
Definition MessageEndpoint.h:147
virtual void NotifyRegistration(const FMessageAddress &InAddress, EMessageBusNotification InNotification)
Definition MessageEndpoint.h:517
void Subscribe()
Definition MessageEndpoint.h:915
void Send(MessageType *Message, const FMessageAddress &Recipient, const FTimespan &Delay)
Definition MessageEndpoint.h:742
void Send(MessageType *Message, EMessageFlags Flags, const TMap< FName, FString > Annotations, const TSharedPtr< IMessageAttachment, ESPMode::ThreadSafe > &Attachment, const TArray< FMessageAddress > &Recipients, const FTimespan &Delay, const FDateTime &Expiration)
Definition MessageEndpoint.h:899
void Publish(MessageType *Message, const TMap< FName, FString > Annotations, EMessageScope Scope)
Definition MessageEndpoint.h:645
Definition NameTypes.h:617
Definition ScopeLock.h:141
static CORE_API FTaskGraphInterface & Get()
Definition TaskGraph.cpp:1794
Definition IMessageBusListener.h:27
Definition IMessageAttachment.h:24
static MESSAGING_API const FTopLevelAssetPath PATHNAME_All
Definition IMessageBus.h:310
Definition IMessageContext.h:225
Definition IMessageReceiver.h:26
Definition IMessageSender.h:28
Definition ArrayBuilder.h:16
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition UnrealString.h.inl:34
Definition Queue.h:48
bool IsEmpty() const
Definition Queue.h:206
bool Enqueue(const FElementType &Item)
Definition Queue.h:123
bool Dequeue(FElementType &OutItem)
Definition Queue.h:80
static UE_FORCEINLINE_HINT TRange AtLeast(ElementValueOrConstRef Value)
Definition Range.h:648
Definition SharedPointer.h:1640
TSharedRef< FMessageEndpoint, Mode > AsShared()
Definition SharedPointer.h:1650
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT void Reset()
Definition SharedPointer.h:1120
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
UE_FORCEINLINE_HINT bool IsValid() const
Definition SharedPointer.h:1535
Definition Class.h:1720
UE_FORCEINLINE_HINT Type GetThreadIndex(Type ThreadAndIndex)
Definition TaskGraphInterfaces.h:148
Type
Definition TaskGraphInterfaces.h:57
@ false
Definition radaudio_common.h:23
Definition DateTime.h:76
static FDateTime MaxValue()
Definition DateTime.h:656
Definition Guid.h:109
Definition IMessageContext.h:26
Definition MessageEndpoint.h:36
EMessageBusNotification NotificationType
Definition MessageEndpoint.h:38
FMessageAddress RegistrationAddress
Definition MessageEndpoint.h:41
Definition MessageEndpointBuilder.h:18
Definition Timespan.h:76
static FTimespan Zero()
Definition Timespan.h:747
Definition TopLevelAssetPath.h:38