acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
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
14
class
notify_lock
;
15
16
class
notify_lock_notifier
:
17
virtual
public
::subparticle
18
{
19
public
:
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
35
class
CLASS_DECL_ACME happening :
36
virtual
public
::notify_lock_notifier
37
{
38
public
:
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
85
using
subparticle::unlock
;
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
happening::_wait
void _wait() override
Session independent waitables (windows version).
Definition
aaa_event.cpp:651
notify_lock_notifier
Definition
happening.h:18
notify_lock
Definition
manual_reset_happening.h:50
security_attributes
Definition
security_attributes.h:7
subparticle::unlock
virtual void unlock()
Definition
subparticle.cpp:795
time
Definition
aaa_time.h:13
parallelization
happening.h
Generated by
1.17.0