hmbdc
simplify-high-performance-messaging-programming
Classes | Public Member Functions | Public Attributes | List of all members
hmbdc::pattern::seqarb_detail::SeqArb< PARTICIPANT_COUNT, Seq, THREADSAFE > Struct Template Reference

Public Member Functions

 SeqArb (Seq startSeq=0)
 
 SeqArb (SeqArb const &)=delete
 
SeqArboperator= (SeqArb const &)=delete
 
template<typename HitFunc , typename GapFunc >
 __attribute__ ((always_inline)) bool operator()(uint16_t participantIndex
 
 if (old==seq)
 
else if (old==std::numeric_limits< Seq >::max())
 
else if (seq< old)
 
 if (unlikely((low > old &&seq_==old &&my__sync_bool_compare_and_swap< THREADSAFE >(&seq_, old, std::numeric_limits< Seq >::max()))))
 
template<typename SeqGen , typename HitFunc , typename GapFunc >
 __attribute__ ((always_inline)) size_t operator()(uint16_t participantIndex
 
 if (old==seq)
 
else if (old==std::numeric_limits< Seq >::max())
 
else if (seq< old)
 
 if (unlikely((low > old &&seq_==old &&my__sync_bool_compare_and_swap< THREADSAFE >(&seq_, old, std::numeric_limits< Seq >::max()))))
 
volatile Seq const & expectingSeq () const
 
volatile Seq & expectingSeq ()
 

Public Attributes

Seq seq
 
Seq HitFunc && h
 
Seq HitFunc GapFunc &&g HMBDC_RESTRICT
 
auto old = my__sync_val_compare_and_swap<THREADSAFE>(&seq_, seq, std::numeric_limits<Seq>::max())
 
 else
 
return false
 
SeqGen && seqGen
 
SeqGen size_t seqSize
 
SeqGen size_t HitFunc && h
 
SeqGen size_t HitFunc GapFunc &&g HMBDC_RESTRICT
 
j_[participantIndex] seq = seq
 
 return
 

Member Data Documentation

template<uint16_t PARTICIPANT_COUNT, typename Seq = uint64_t, bool THREADSAFE = true>
hmbdc::pattern::seqarb_detail::SeqArb< PARTICIPANT_COUNT, Seq, THREADSAFE >::else
Initial value:
{
auto low = jLow()
template<uint16_t PARTICIPANT_COUNT, typename Seq = uint64_t, bool THREADSAFE = true>
Seq HitFunc GapFunc&& g hmbdc::pattern::seqarb_detail::SeqArb< PARTICIPANT_COUNT, Seq, THREADSAFE >::HMBDC_RESTRICT
Initial value:
{
j_[participantIndex].seq = seq
template<uint16_t PARTICIPANT_COUNT, typename Seq = uint64_t, bool THREADSAFE = true>
SeqGen size_t HitFunc GapFunc&& g hmbdc::pattern::seqarb_detail::SeqArb< PARTICIPANT_COUNT, Seq, THREADSAFE >::HMBDC_RESTRICT
Initial value:
{
auto seq = seqGen()

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