7#include "Containers/Array.h"
9#include "Containers/Queue.h"
106 auto Bus = BusPtr.
Pin();
110 Bus->Unregister(Address);
265 Bus->Publish(Message, TypeInfo, Scope, Annotations, Delay, Expiration,
AsShared());
279 UE_DEPRECATED(4.21,
"FMessageEndpoint::Send with 6 params is deprecated. Please use FMessageEndpoint::Send that takes additionnal EMessageFlags instead!")
325 Bus->Send(Message, TypeInfo,
Flags, Annotations, Attachment, Recipients, Delay, Expiration,
AsShared());
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.")
338 Subscribe(UClass::TryConvertShortTypeNameToPathName<UStruct>(MessageType.ToString()), ScopeRange);
353 Bus->Subscribe(
AsShared(), MessageType, ScopeRange);
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.")
366 Unsubscribe(UClass::TryConvertShortTypeNameToPathName<UStruct>(MessageType.ToString()));
381 Bus->Unsubscribe(
AsShared(), MessageType);
396 InboxEnabled =
false;
485 return RecipientThread;
514 return RecipientThread;
553 void*
Buffer = FMemory::Malloc(
sizeof(T));
607 template<
typename MessageType>
619 template<
typename MessageType>
631 template<
typename MessageType>
644 template<
typename MessageType>
656 template<
typename MessageType>
669 template<
typename MessageType>
684 template<
typename MessageType>
687 Publish(Message, MessageType::StaticStruct(), Scope, Delay, Expiration);
700 template<
typename MessageType>
703 Publish(Message, MessageType::StaticStruct(), Scope, Annotations, Delay, Expiration);
713 template<
typename MessageType>
727 template<
typename MessageType>
741 template<
typename MessageType>
756 template<
typename MessageType>
770 template<
typename MessageType>
786 template<
typename MessageType>
803 template<
typename MessageType>
816 template<
typename MessageType>
830 template<
typename MessageType>
845 template<
typename MessageType>
861 template<
typename MessageType>
879 template<
typename MessageType>
882 Send(Message, MessageType::StaticStruct(),
Flags, Attachment, Recipients, Delay, Expiration);
898 template<
typename MessageType>
901 Send(Message, MessageType::StaticStruct(),
Flags, Annotations, Attachment, Recipients, Delay, Expiration);
914 template<
class MessageType>
929 template<
class MessageType>
932 Subscribe(MessageType::StaticStruct()->GetStructPathName(), ScopeRange);
951 template<
class MessageType>
954 Unsubscribe(MessageType::StaticStruct()->GetStructPathName());
974 Endpoint->ClearHandlers();
1000 return BusPtr.
Pin();
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition UnrealString.h.inl:34
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
UE_FORCEINLINE_HINT Type GetThreadIndex(Type ThreadAndIndex)
Definition TaskGraphInterfaces.h:148
Type
Definition TaskGraphInterfaces.h:57
@ false
Definition radaudio_common.h:23
static FDateTime MaxValue()
Definition DateTime.h:656
Definition IMessageContext.h:26
Definition MessageEndpoint.h:36
EMessageBusNotification NotificationType
Definition MessageEndpoint.h:38
FMessageAddress RegistrationAddress
Definition MessageEndpoint.h:41
Definition MessageEndpointBuilder.h:18
static FTimespan Zero()
Definition Timespan.h:747
Definition TopLevelAssetPath.h:38