acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
happening.h
1// As happening by camilo on 2024-11-08 21:22 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5#if defined(LINUX) || defined(__APPLE__) || defined(__BSD__)
6#include <sys/types.h>
7#include <sys/sem.h>
8#endif
9
10
11//#include "acme/operating_system/security_attributes.h"
12#include "acme/prototype/prototype/subparticle.h"
13
14class notify_lock;
15
17 virtual public ::subparticle
18{
19public:
20
21
22 ::comparable_eq_list_base < ::pointer < ::notify_lock > > m_notifylocka;
23
24
25 ~notify_lock_notifier() override;
26
27 virtual void add_notify_lock(::notify_lock * pnotifylock);
28 virtual void erase_notify_lock(::notify_lock * pnotifylock);
29
30 virtual void notify_lock_notify_all();
31
32};
33
34
35class CLASS_DECL_ACME happening :
36 virtual public ::notify_lock_notifier
37{
38public:
39
40
41 ::i32 m_iEventSerialId;
42
43#ifdef WINDOWS
44
45 hsynchronization m_handle;
46
47#endif
48
49
50#if defined(LINUX) || defined(__APPLE__) || defined(__ANDROID__) || defined(__BSD__)
51
53 bool m_bManualEvent;
54 bool m_bSignaled; // meaningful only when m_bManualEvent
55 ::i32 m_iSignalId; // meaningful only when m_bManualEvent
56 void * m_pcond; // pthread_cond_t
57 void * m_pmutex; // pthread_mutex_t;
58
59 //notify_lock_notifier m_notifylocknotifier;
60 bool start_notify_lock(::notify_lock * pnotifylock) override;
61 void end_notify_lock(::notify_lock * pnotifylock) override;
62
63
64#endif
65
66
67#if defined(LINUX) || defined(__APPLE__) || defined(__BSD__) || defined(__ANDROID__)
68
70 ::i32 m_sem;
71
72#endif
73
74
75 happening(const ::scoped_string & scopedstrName = nullptr, bool bInitiallyOwn = false, bool bManualReset = false, security_attributes * psecurityattributes = nullptr);
76 ~happening() override;
77
78 // using event_base::lock;
79 //bool lock(const ::wait & wait = wait::infinite()) override;
80
81
82 hsynchronization get_synchronization_handle() override;
83
84
86 void unlock() override;
87
88 //virtual hsynchronization hsynchronization() const;
89
90 //bool SetHappening();
91 bool set_happening();
92 //bool pulse_happening();
93 bool reset_happening();
94
98
100 void _wait () override;
101
105 bool _wait (const class time & timeWait) override;
106
107 bool is_signaled() const;
108
109 void add_notify_lock(::notify_lock * pnotifylock) override;
110 void erase_notify_lock(::notify_lock * pnotifylock) override;
111 void notify_lock_notify_all() override;
112
113};
114
void _wait() override
Session independent waitables (windows version).
Definition aaa_event.cpp:651
Definition happening.h:18
Definition manual_reset_happening.h:50
Definition security_attributes.h:7
virtual void unlock()
Definition subparticle.cpp:795
Definition aaa_time.h:13