Menu
Lumberyard
C++ API Reference (Version 1.10)

AZ::BusInternal::EBusImplTraits< Interface, BusTraits > Struct Template Reference

Open 3D Engine (O3DE), the successor to Lumberyard, is now available in Developer Preview. Download O3DE or visit the AWS Game Tech blog to learn more.

Internal class that contains data about EBusTraits . More...

Public Types

using Traits
Properties that you use to configure an EBus . More...
using AllocatorType
Allocator used by the EBus . More...
using InterfaceType
The class that defines the interface of the EBus . More...
using Events
The events defined by the EBus interface. More...
using BusIdType
The type of ID that is used to address the EBus . More...
using BusIdOrderCompare
Sorting function for EBus address IDs. More...
using MutexType
Locking primitive that is used when connecting handlers to the EBus or executing events. More...
using EBNode
An address on the EBus . More...
using BusesContainer
Contains all of the addresses on the EBus . More...
using EventQueueMutexType
Locking primitive that is used when executing events in the event queue. More...
using BusPtr
Pointer to an address on the bus. More...
using HandlerNode
Pointer to a handler node. More...

Static Public Attributes

static const bool EnableEventQueue
Specifies whether the EBus supports an event queue. More...
static const bool HasId
True if the EBus supports more than one address. More...

Detailed Description

template<class Interface, class BusTraits>
struct AZ::BusInternal::EBusImplTraits< Interface, BusTraits >

Internal class that contains data about EBusTraits .

Template Parameters
Interface A class whose virtual functions define the events that are dispatched or received by the EBus .
Traits A class that inherits from EBusTraits and configures the EBus . This parameter is optional if the Interface class inherits from EBusTraits .

Member Typedef Documentation

AllocatorType

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: AllocatorType = typename Traits::AllocatorType

Allocator used by the EBus .

The default setting is AZStd::allocator, which uses AZ::SystemAllocator.

BusesContainer

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: BusesContainer = typename AZStd::Utils::if_c<Traits::AddressPolicy == EBusAddressPolicy::Single , typename AZ::EBBusSingle< EBNode >, typename AZStd::Utils::if_c<Traits::AddressPolicy == EBusAddressPolicy::ById , typename AZ::EBBusMulti< EBNode >, typename AZ::EBBusMultiOrdered< EBNode > >::type>::type

Contains all of the addresses on the EBus .

BusIdOrderCompare

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: BusIdOrderCompare = typename Traits::BusIdOrderCompare

Sorting function for EBus address IDs.

Used only when the AddressPolicy is AZ::EBusAddressPolicy::ByIdAndOrdered . If an event is dispatched without an ID, this function determines the order in which each address receives the event. The function must satisfy AZStd::binary_function<BusIdType, BusIdType, bool> .

The following example shows a sorting function that meets these requirements.

using BusIdOrderCompare = AZStd::less<BusIdType>; // Lesser IDs first.

BusIdType

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: BusIdType = typename Traits::BusIdType

The type of ID that is used to address the EBus .

Used only when the address policy is AZ::EBusAddressPolicy::ById or AZ::EBusAddressPolicy::ByIdAndOrdered . The type must support AZStd::hash<ID> and bool operator==(const ID&, const ID&) .

BusPtr

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: BusPtr = typename EBNode::pointer

Pointer to an address on the bus.

EBNode

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: EBNode = typename AZStd::Utils::if_c<Traits::HandlerPolicy == EBusHandlerPolicy::Single , typename AZ::EBECSingle<Interface, Traits >, typename AZStd::Utils::if_c<Traits::HandlerPolicy == EBusHandlerPolicy::MultipleAndOrdered , typename AZ::EBECMultiOrdered<Interface, Traits >, typename AZ::EBECMulti<Interface, Traits > >::type>::type

An address on the EBus .

EventQueueMutexType

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: EventQueueMutexType = typename AZStd::Utils::if_c<AZStd::is_same<typename Traits::EventQueueMutexType, NullMutex >::value, MutexType , typename Traits::EventQueueMutexType>::type

Locking primitive that is used when executing events in the event queue.

Events

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: Events = Interface

The events defined by the EBus interface.

HandlerNode

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: HandlerNode = typename EBNode::HandlerNode

Pointer to a handler node.

InterfaceType

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: InterfaceType = Interface

The class that defines the interface of the EBus .

MutexType

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: MutexType = typename Traits::MutexType

Locking primitive that is used when connecting handlers to the EBus or executing events.

By default, all access is assumed to be single threaded and no locking occurs. For multithreaded access, specify a mutex of the following type.

  • For simple multithreaded cases, use AZStd::mutex.
  • For multithreaded cases where an event handler sends a new event on the same bus or connects/disconnects while handling an event on the same bus, use AZStd::recursive_mutex.

Traits

template<class Interface , class BusTraits >
using AZ::BusInternal::EBusImplTraits < Interface, BusTraits >:: Traits = BusTraits

Properties that you use to configure an EBus .

For more information, see EBusTraits .

Member Data Documentation

EnableEventQueue

template<class Interface , class BusTraits >
const bool AZ::BusInternal::EBusImplTraits < Interface, BusTraits >::EnableEventQueue
static

Specifies whether the EBus supports an event queue.

You can use the event queue to execute events at a later time. To execute the queued events, you must call <BusName>::ExecuteQueuedEvents() . By default, the event queue is disabled.

HasId

template<class Interface , class BusTraits >
const bool AZ::BusInternal::EBusImplTraits < Interface, BusTraits >::HasId
static

True if the EBus supports more than one address.

Otherwise, false.


The documentation for this struct was generated from the following file:
  • C:/lumberyard-root/dev/Code/Framework/AzCore/AzCore/EBus/ BusImpl.h