/* ZEvent.hpp Author: James Russell Purpose: RAII wrapper for SST_Event from libsst-concurrency. Changelog 2011/11/27 - creation (jcrussell) */ #pragma once #ifndef _ZEVENT_H #define _ZEVENT_H #include #include /* Event class. Used to manage allocation and deallocation of events. Cannot be copied or assigned, which prevents it from being used in stl-like containers. */ class ZEvent { private: DISABLE_COPY_AND_ASSIGN(ZEvent); //libsst Event SST_Event Event; public: /* Constructor. Creates an event from libsst-concurrency. */ ZEvent(); /* Destructor. Frees our event from libsst-concurrency. */ ~ZEvent(); /* public ZSignal::Notify Signals event, waking up all waiting threads. Until this event is reset, waiting threads will return. @return (void) @context (all) */ void Notify(); /* public ZSignal::Reset Signals reset, which causes threads that call Wait to block until signaled. @return (void) @context (all) */ void Reset(); /* public ZSignal::Wait Waits on a signal. Blocks until Signal is called. @return (bool) - true if the event was signaled, false if returned before a signal (such as event not reset) @context (all) */ bool Wait(); /* public ZSignal::Wait Waits on a signal for an amount of time. @param _ms - the amount of time (in ms) to wait. @return (bool) - true if the event was signaled, false if returned before a signal (event not reset our out of time). @context (all) */ bool Wait(uint32_t _ms); }; #endif