FARGOS/VISTA Object Management Environment Core  ..
FARGOS/VISTA Object Management Environment Core Table of Contents
OMEevent.h
Go to the documentation of this file.
1 #ifndef _OME_EVENT_H
2 #define _OME_EVENT_H "$Id: OMEevent.h 345 2020-05-21 01:03:07Z geoff $"
4 
6 #include <OMEthread.h>
7 
12 #ifdef _WIN32
13 typedef int (*OMEwin32MessageLoopFP)();
14 #endif
15 
16 typedef bool (*OMEeventCallbackFP)(class OMEevent *, OMEthread *);
17 
22 class OMEevent {
23 public:
24  enum OMEeventType {
29  };
30  uint64_t eventHandle;
33  void *extraData;
35 private:
36  bool posted;
37 
38 public:
40  OMEthread *thread = nullptr, void *extra = nullptr) {
41  eventType = t;
42  eventHandle = h;
43  callback = func;
44  waitingThread = thread;
45  extraData = extra;
46  posted = false;
47  }
48 
49  virtual ~OMEevent() {
50  }
51 
53  bool operator==(const OMEevent &arg) const {
54  if (eventHandle != arg.eventHandle) return (false);
55  if (eventType != arg.eventType) return (false);
56  return (true);
57  }
59  bool operator!=(const OMEevent &arg) const {
60  if (eventHandle != arg.eventHandle) return (true);
61  if (eventType != arg.eventType) return (true);
62  return (false);
63  }
65  bool operator<(const OMEevent &arg) const {
66  if (eventHandle > arg.eventHandle) return (false);
67  if (eventHandle < arg.eventHandle) return (true);
68  // eventHandles must be equal...
69  if (eventType < arg.eventType) return (true);
70  return (false);
71  }
72 
78  bool postEvent() {
79  posted = true;
80  bool rc = (*callback)(this, waitingThread);
81  return (rc);
82  }
88  bool isPosted() const { return (posted); }
89 }; // end class OMEevent
90 
92 
93 /*
94 class OMEwin32Event : public OMEevent {
95 public:
96  OMEwin32Event(uint32_t h, OMEeventCallbackFP func);
97  ~OMEwin32Event() {}
98 };
99 */
100 
102 
104 
105 void OMEpostEvent(OMEevent::OMEeventType t, uint64_t handle, uint64_t result = 0);
106 
107 time_t OMEpostTimerEvent(time_t currentTime = 0);
108 
109 time_t OMEnextEventTime(time_t currentTime = 0); // probably not needed
110 
114 #endif
115 /* vim: set expandtab shiftwidth=4 tabstop=4: */
OMEeventCallbackFP
bool(* OMEeventCallbackFP)(class OMEevent *, OMEthread *)
Definition: OMEevent.h:16
OMEpostTimerEvent
time_t OMEpostTimerEvent(time_t currentTime=0)
OMEevent::OMEevent
OMEevent(OMEeventType t, uint32_t h, OMEeventCallbackFP func, OMEthread *thread=nullptr, void *extra=nullptr)
Definition: OMEevent.h:39
OMEeventP
OMEevent * OMEeventP
Definition: OMEevent.h:91
OMEevent::callback
OMEeventCallbackFP callback
Function to service event.
Definition: OMEevent.h:31
OMEevent::timerExpired
@ timerExpired
elapsed time timer
Definition: OMEevent.h:25
OMEprofileCounter< uint32_t >
OMEdebugFlag
SMV_StandaloneNumeric< uint32_t > OMEdebugFlag("debugFlag")
OMEevent::eventType
OMEeventType eventType
Fundamental event type.
Definition: OMEevent.h:34
OMEexecuteOIL2threads
int OMEexecuteOIL2threads(const uint_fast32_t count)
Definition: OMEexecQueue.cpp:566
OMEmainLoop
int OMEmainLoop(uint_fast32_t methodLimit)
FARGOS/VISTA Object Mangement Environment main loop. Invokes OMEdoWork(). Upon return,...
Definition: OMEevent.cpp:243
OMEstopLoiterThreads
void OMEstopLoiterThreads()
Definition: OMEexecQueue.cpp:469
OMEioEvents.h
OMEwaitForThreadsToStop
uint_fast32_t OMEwaitForThreadsToStop(uint_fast32_t maxWaitTime)
Request loiter threads to terminate and wait for them to terminate.
Definition: OMEexecQueue.cpp:485
OMEprofileRecord::outputCounters
static STREAMTYPE & outputCounters(STREAMTYPE &o)
Write a counter's value to an output stream.
Definition: OMEdebugInfo.h:108
OMEevent::isPosted
bool isPosted() const
Check if event has been posted.
Definition: OMEevent.h:88
OMEevent.h
OMEwaitForIO
int OMEwaitForIO(uint_fast32_t delay)
Definition: OMEioEvents.cpp:395
OMEevent::operator!=
bool operator!=(const OMEevent &arg) const
Event inequality.
Definition: OMEevent.h:59
OMEevent::win32Event
@ win32Event
Microsoft Windows-specific event.
Definition: OMEevent.h:28
LOG_COUT
#define LOG_COUT(lvl)
Convenience macro that uses LOG_INTO() to conditionally log a message to standard output.
Definition: logging_api.hpp:3007
OMEdebugProfileCounters
#define OMEdebugProfileCounters
Definition: OMEdebugInfo.h:28
OMEpostEvent
void OMEpostEvent(OMEevent::OMEeventType t, uint64_t handle, uint64_t result)
Definition: OMEevent.cpp:92
OMEcore.h
OMEevent::~OMEevent
virtual ~OMEevent()
Definition: OMEevent.h:49
srcID
const char srcID[]
Definition: catSym.c:17
OMEevent::posted
bool posted
Definition: OMEevent.h:36
OMEevent::childDeath
@ childDeath
child process terminated
Definition: OMEevent.h:27
OMEevent::eventHandle
uint64_t eventHandle
Event-specific handle.
Definition: OMEevent.h:30
OMEnextEventTime
time_t OMEnextEventTime(time_t fromTime)
Definition: OMEevent.cpp:129
OMEevent::extraData
void * extraData
Any event-specific data.
Definition: OMEevent.h:33
OMEevent::OMEeventType
OMEeventType
Definition: OMEevent.h:24
OMEevent::waitingThread
OMEthread * waitingThread
OMEthread to signal.
Definition: OMEevent.h:32
OMEthread.h
OMEsendShutdown
int OMEsendShutdown()
Definition: OMEcreate.cpp:136
OME_EXPECT_TRUE
#define OME_EXPECT_TRUE(expr)
Annotation macro for conditional expression expected to be true.
Definition: compiler_hints.h:541
OMEevent::ioPossible
@ ioPossible
data available/can be written
Definition: OMEevent.h:26
OMEclearEventQueue
int OMEclearEventQueue(OMEevent::OMEeventType eventType)
Definition: OMEevent.cpp:65
OMEexecQueue.h
OMEstopFlag
SMV_StandaloneNumeric< uint32_t > OMEstopFlag("stopFlag")
External flag used to trigger stop of a FARGOS/VISTA Object Management Environment.
OME_USED
const char srcID[] OME_USED
Definition: tick_time.cpp:24
OMEpostTimeEvents
time_t OMEpostTimeEvents(time_t currentTime)
Definition: OMEevent.cpp:99
OMEaddEventToQueue
void OMEaddEventToQueue(OMEevent *event)
Definition: OMEevent.cpp:43
OMEevent::operator<
bool operator<(const OMEevent &arg) const
Event ordering.
Definition: OMEevent.h:65
OME_EXPECT_FALSE
#define OME_EXPECT_FALSE(expr)
Annotation macro for conditional expression expected to be false.
Definition: compiler_hints.h:540
OMEevent::postEvent
bool postEvent()
Post event and call callback function.
Definition: OMEevent.h:78
OME_FAST_CALL
#define OME_FAST_CALL
Definition: compiler_hints.h:468
OMEevent
Base class for events within the FARGOS/VISTA Object Management Environment.
Definition: OMEevent.h:22
OMEdebugEvents
#define OMEdebugEvents
Definition: OMEdebugInfo.h:23
_STD
#define _STD
Definition: OMEmanifests.h:146
OMEdebugInfo.h
OME debug and profiling interfaces.
OMEthread
Public interface to an OME thread.
Definition: OMEthread.h:60
LOG_ENDLINE
#define LOG_ENDLINE
Closing clause for text line output using << operators.
Definition: logging_api.hpp:2956
OMEevent::operator==
bool operator==(const OMEevent &arg) const
Event equality.
Definition: OMEevent.h:53
LOG_CERR
#define LOG_CERR(lvl)
Convenience macro that uses LOG_INTO() to conditionally log a message to standard error.
Definition: logging_api.hpp:3014
logging_api.hpp
FARGOS Logging API.
Generated: Tue Jul 28 2020 16:03:25
Support Information