TrinityCore
Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink > Class Template Reference

#include <MPSCQueue.h>

Public Member Functions

 MPSCQueueIntrusive ()
 
 ~MPSCQueueIntrusive ()
 
void Enqueue (T *input)
 
bool Dequeue (T *&result)
 

Private Types

using Atomic = std::atomic< T * >
 

Private Member Functions

 MPSCQueueIntrusive (MPSCQueueIntrusive const &)=delete
 
MPSCQueueIntrusiveoperator= (MPSCQueueIntrusive const &)=delete
 

Private Attributes

std::array< std::byte, sizeof(T)> _dummy
 
T * _dummyPtr
 
Atomic _head
 
Atomic _tail
 

Detailed Description

template<typename T, std::atomic< T * > T::* IntrusiveLink>
class Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >

Definition at line 94 of file MPSCQueue.h.

Member Typedef Documentation

◆ Atomic

template<typename T , std::atomic< T * > T::* IntrusiveLink>
using Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::Atomic = std::atomic<T*>
private

Definition at line 96 of file MPSCQueue.h.

Constructor & Destructor Documentation

◆ MPSCQueueIntrusive() [1/2]

template<typename T , std::atomic< T * > T::* IntrusiveLink>
Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::MPSCQueueIntrusive ( )
inline

Definition at line 99 of file MPSCQueue.h.

◆ ~MPSCQueueIntrusive()

template<typename T , std::atomic< T * > T::* IntrusiveLink>
Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::~MPSCQueueIntrusive ( )
inline

Definition at line 107 of file MPSCQueue.h.

+ Here is the call graph for this function:

◆ MPSCQueueIntrusive() [2/2]

template<typename T , std::atomic< T * > T::* IntrusiveLink>
Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::MPSCQueueIntrusive ( MPSCQueueIntrusive< T, IntrusiveLink > const &  )
privatedelete

Member Function Documentation

◆ Dequeue()

template<typename T , std::atomic< T * > T::* IntrusiveLink>
bool Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::Dequeue ( T *&  result)
inline

Definition at line 124 of file MPSCQueue.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Enqueue()

template<typename T , std::atomic< T * > T::* IntrusiveLink>
void Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::Enqueue ( T *  input)
inline

Definition at line 117 of file MPSCQueue.h.

+ Here is the caller graph for this function:

◆ operator=()

template<typename T , std::atomic< T * > T::* IntrusiveLink>
MPSCQueueIntrusive & Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::operator= ( MPSCQueueIntrusive< T, IntrusiveLink > const &  )
privatedelete

Member Data Documentation

◆ _dummy

template<typename T , std::atomic< T * > T::* IntrusiveLink>
std::array<std::byte, sizeof(T)> Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::_dummy
private

Definition at line 161 of file MPSCQueue.h.

◆ _dummyPtr

template<typename T , std::atomic< T * > T::* IntrusiveLink>
T* Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::_dummyPtr
private

Definition at line 162 of file MPSCQueue.h.

◆ _head

template<typename T , std::atomic< T * > T::* IntrusiveLink>
Atomic Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::_head
private

Definition at line 163 of file MPSCQueue.h.

◆ _tail

template<typename T , std::atomic< T * > T::* IntrusiveLink>
Atomic Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >::_tail
private

Definition at line 164 of file MPSCQueue.h.


The documentation for this class was generated from the following file: