OpenZWave Library 1.6.1914
Loading...
Searching...
No Matches
Wait.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2//
3// Wait.h
4//
5// Cross-platform abstract base class for objects we
6// want to be able to wait for.
7//
8// Copyright (c) 2010 Mal Lansell <mal@lansell.org>
9// All rights reserved.
10//
11// SOFTWARE NOTICE AND LICENSE
12//
13// This file is part of OpenZWave.
14//
15// OpenZWave is free software: you can redistribute it and/or modify
16// it under the terms of the GNU Lesser General Public License as published
17// by the Free Software Foundation, either version 3 of the License,
18// or (at your option) any later version.
19//
20// OpenZWave is distributed in the hope that it will be useful,
21// but WITHOUT ANY WARRANTY; without even the implied warranty of
22// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23// GNU Lesser General Public License for more details.
24//
25// You should have received a copy of the GNU Lesser General Public License
26// along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
27//
28//-----------------------------------------------------------------------------
29#ifndef _Wait_H
30#define _Wait_H
31
32#include <list>
33#include "platform/Ref.h"
34
35namespace OpenZWave
36{
37 namespace Internal
38 {
39 namespace Platform
40 {
41 class WaitImpl;
42
46 class Wait: public Ref
47 {
48 friend class WaitImpl;
49 friend class ThreadImpl;
50
51 public:
52 enum
53 {
56 };
57
58 typedef void (*pfnWaitNotification_t)(void* _context);
59
66 void AddWatcher(pfnWaitNotification_t _callback, void* _context);
67
74 void RemoveWatcher(pfnWaitNotification_t _callback, void* _context);
75
82 static int32 Single(Wait* _object, int32 _timeout = -1)
83 {
84 return Multiple(&_object, 1, _timeout);
85 }
86
95 static int32 Multiple(Wait** _objects, uint32 _numObjects, int32 _timeout = -1);
96
97 protected:
98 Wait();
99 virtual ~Wait();
100
104 void Notify();
105
109 virtual bool IsSignalled() = 0;
110
111 private:
112 Wait(Wait const&); // prevent copy
113 Wait& operator =(Wait const&); // prevent assignment
114
115 WaitImpl* m_pImpl; // Pointer to an object that encapsulates the platform-specific implementation of a Wait object.
116 };
117 } // namespace Platform
118 } // namespace Internal
119} // namespace OpenZWave
120
121#endif //_Wait_H
122
unsigned int uint32
Definition Defs.h:91
signed int int32
Definition Defs.h:90
Platform-independent definition of Wait objects.
Definition Wait.h:47
static int32 Multiple(Wait **_objects, uint32 _numObjects, int32 _timeout=-1)
Definition Wait.cpp:113
void RemoveWatcher(pfnWaitNotification_t _callback, void *_context)
Definition Wait.cpp:92
friend class WaitImpl
Definition Wait.h:48
void AddWatcher(pfnWaitNotification_t _callback, void *_context)
Definition Wait.cpp:73
Wait()
Definition Wait.cpp:55
virtual ~Wait()
Definition Wait.cpp:64
@ Timeout_Infinite
Definition Wait.h:55
@ Timeout_Immediate
Definition Wait.h:54
void Notify()
Definition Wait.cpp:104
friend class ThreadImpl
Definition Wait.h:49
void(* pfnWaitNotification_t)(void *_context)
Definition Wait.h:58
static int32 Single(Wait *_object, int32 _timeout=-1)
Definition Wait.h:82
Definition Bitfield.cpp:31