8 #ifndef DAQ_RESOURCE_TOKEN_HPP
9 #define DAQ_RESOURCE_TOKEN_HPP
15 #include <boost/signals2.hpp>
16 #include <boost/thread/future.hpp>
43 using Signal = boost::signals2::signal<void()>;
45 explicit Resource(
unsigned limit) noexcept : m_limit(limit) {
49 boost::future<ResourceToken> AsyncAcquire() noexcept;
53 bool HasResource() const noexcept {
54 return m_limit == 0 || m_used < m_limit;
72 boost::signals2::connection Connect(Signal::slot_type
const& slot);
75 void Release() noexcept;
ResourceToken & operator=(ResourceToken &)=delete
ResourceToken(Resource *) noexcept
ResourceToken(ResourceToken const &)=delete
boost::signals2::signal< void()> Signal
Signal that emits on changes to resources.
Resource(unsigned limit) noexcept
Resource & operator=(Resource const &) noexcept=delete
unsigned GetLimit() const noexcept
void SetLimit(unsigned new_limit) noexcept
unsigned GetUsed() const noexcept