Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #pragma once
00030
00031
00032 #include "../api_core.h"
00033 #include "../Signals/callback_0.h"
00034 #include "../Signals/callback_v1.h"
00035 #include "../Signals/callback_2.h"
00036
00037 class CL_Event;
00038 class CL_KeepAliveObject;
00039 class CL_KeepAliveObject_Impl;
00040
00044 class CL_API_CORE CL_KeepAlive
00045 {
00046 public:
00050 static void process(int timeout = 0);
00051
00061 static CL_Callback_2<int , const std::vector<CL_Event> &, int > &func_event_wait();
00062
00066 static CL_Callback_0<void *> &func_thread_id();
00067
00071 static CL_Callback_v1<void *> &func_awake_thread();
00072
00074 static std::vector<CL_KeepAliveObject *> get_objects();
00075 };
00076
00080 class CL_API_CORE CL_KeepAliveObject
00081 {
00082 public:
00084 CL_KeepAliveObject();
00085
00087 virtual ~CL_KeepAliveObject();
00088
00090 void set_wakeup_event();
00091
00093 virtual void process() = 0;
00094
00095 private:
00096 CL_SharedPtr<CL_KeepAliveObject_Impl> impl;
00097 friend class CL_KeepAlive;
00098 };