MEL
Microthread & Execution library
Event.h
1 #pragma once
2 /*
3  * SPDX-FileCopyrightText: 2005,2022 Daniel Barrientos
4  * <danivillamanin@gmail.com>
5  *
6  * SPDX-License-Identifier: MIT
7  */
8 #include <MelLibType.h>
9 #if defined( MEL_LINUX ) || defined( MEL_MACOSX ) || defined( MEL_ANDROID ) || \
10  defined( MEL_IOS )
11 #include <pthread.h>
12 #endif
13 namespace mel
14 {
15  namespace core
16  {
17 
24  class MEL_API Event
25  {
26  public:
30  enum EWaitCode
31  {
34  EVENT_WAIT_ERROR
35  };
36 #if defined( MEL_LINUX ) || defined( MEL_MACOSX ) || defined( MEL_ANDROID ) || \
37  defined( MEL_IOS )
38  static const int EVENT_WAIT_INFINITE = -1;
39 #elif defined( _WIN32 )
40  static const int EVENT_WAIT_INFINITE = INFINITE;
41 
42 #endif
43 
53  Event( bool autoRelease = true, bool signaled = false );
54  ~Event();
55 
63  void set();
64 
73  EWaitCode wait( unsigned int msecs = EVENT_WAIT_INFINITE ) const;
79  void reset();
80 
81  private:
82  Event( const Event& ev2 ) {}
83 #if defined( MEL_LINUX ) || defined( MEL_MACOSX ) || defined( MEL_ANDROID ) || \
84  defined( MEL_IOS )
85  mutable bool mSignaled;
86  bool mAutoRelease;
87  mutable pthread_mutex_t _mutex;
88  mutable pthread_cond_t _cond;
89 #elif defined( _WIN32 )
90  HANDLE mEvent;
91 
92 #endif
93  };
94 
95  // end namespace
96  } // namespace core
97 } // namespace mel
Definition: Event.h:25
EWaitCode
Wait result codes.
Definition: Event.h:31
@ EVENT_WAIT_TIMEOUT
time out while waiting
Definition: Event.h:33
@ EVENT_WAIT_OK
wait was ok
Definition: Event.h:32
EWaitCode wait(unsigned int msecs=EVENT_WAIT_INFINITE) const
Event(bool autoRelease=true, bool signaled=false)
Definition: Callback_Impl.h:11