BloombergLP::bslstl::StopToken_RefCountedState

This component-private struct adds a reference count to the internal StopState class. This reference count represents the number of bsl::stop_source objects that refer to the stop state (NOT the total number of objects that refer to the stop state).

Synopsis

Declared in <bslstl_stoptoken.h>

struct StopToken_RefCountedState
    : StopState

Description

Implementation note: The reference count has been kept outside the StopState object in order to enable StopState to potentially be reused to implement in_place_stop_source (from WG21 proposal P2300R7) without the overhead from the reference count.

Base Classes

NameDescription
StopStateShared stop state that tracks a stop request and registered callbacks.

Member Functions

NameDescription
deregister If the callback of the specified node is currently executing, wait for it to complete. Otherwise, remove node from the list of nodes registered to this state. The behavior is undefined if this method is called more than once for a given node or if node was not previously registered to this state by a call to enregister that returned true.
enregister If a stop has already been requested, then invoke the callback of the specified node and return false. Otherwise, add node to the list of nodes registered to this state and return true. The behavior is undefined if this method is called more than once for a given node.
requestStop If this StopState object has already had a stop requested, return false. Otherwise, atomically mark this StopState object as having had a stop requested, then execute all registered callbacks in an unspecified order, and finally return true.
stopRequested Return true if a stop has been requested on this StopState object, and false otherwise.

Data Members

NameDescription
d_stopSourceCount The number of bsl::stop_source objects that refer to this stop state.