74 lines
1.6 KiB
C++
74 lines
1.6 KiB
C++
#ifndef _VNXPLAT_EVENT_H_
|
|
#define _VNXPLAT_EVENT_H_
|
|
|
|
#include "nocopy.h"
|
|
#include "int.h"
|
|
#include "export.h"
|
|
|
|
namespace vn {
|
|
namespace xplat {
|
|
|
|
/// \brief Represents a cross-platform event.
|
|
class vn_proglib_DLLEXPORT Event : private util::NoCopy
|
|
{
|
|
|
|
public:
|
|
|
|
/// \brief Available wait results.
|
|
enum WaitResult
|
|
{
|
|
WAIT_SIGNALED, ///< The event was signalled.
|
|
WAIT_TIMEDOUT ///< Timed out while waiting for the event to signal.
|
|
};
|
|
|
|
// Constructors ///////////////////////////////////////////////////////////
|
|
|
|
public:
|
|
|
|
/// \brief Creates a new event.
|
|
Event();
|
|
|
|
~Event();
|
|
|
|
// Public Methods /////////////////////////////////////////////////////////
|
|
|
|
public:
|
|
|
|
/// \brief Waits for a signal on this event.
|
|
///
|
|
/// This method will wait indefinitely for the event.
|
|
void wait();
|
|
|
|
/// \brief Waits for a signal on this event for the specified amount of
|
|
/// time.
|
|
///
|
|
/// \param[in] timeoutUs The amount of time to wait in microseconds.
|
|
/// \return The result of the wait operation.
|
|
WaitResult waitUs(uint32_t timeoutUs);
|
|
|
|
/// \brief Waits for a signal on this event for the specified amount of
|
|
/// time.
|
|
///
|
|
/// \param[in] timeoutMs The amount of time to wait in milliseconds.
|
|
/// \return The result of the wait operation.
|
|
WaitResult waitMs(uint32_t timeoutMs);
|
|
|
|
/// \brief Signals the event.
|
|
void signal();
|
|
|
|
// Private Members ////////////////////////////////////////////////////////
|
|
|
|
private:
|
|
|
|
// Contains internal data, mainly stuff that is required for cross-platform
|
|
// support.
|
|
struct Impl;
|
|
Impl *_pi;
|
|
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif
|