OpenZWave Library 1.2
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 class WaitImpl;
38
41 class Wait: public Ref
42 {
43 friend class WaitImpl;
44 friend class ThreadImpl;
45
46 public:
47 enum
48 {
51 };
52
53 typedef void (*pfnWaitNotification_t)( void* _context );
54
61 void AddWatcher( pfnWaitNotification_t _callback, void* _context );
62
69 void RemoveWatcher( pfnWaitNotification_t _callback, void* _context );
70
77 static int32 Single( Wait* _object, int32 _timeout = -1 ){ return Multiple( &_object, 1, _timeout ); }
78
87 static int32 Multiple( Wait** _objects, uint32 _numObjects, int32 _timeout = -1 );
88
89 protected:
90 Wait();
91 virtual ~Wait();
92
96 void Notify();
97
101 virtual bool IsSignalled() = 0;
102
103 private:
104 Wait( Wait const& ); // prevent copy
105 Wait& operator = ( Wait const& ); // prevent assignment
106
107 WaitImpl* m_pImpl; // Pointer to an object that encapsulates the platform-specific implementation of a Wait object.
108 };
109
110} // namespace OpenZWave
111
112#endif //_Wait_H
113
unsigned int uint32
Definition: Defs.h:69
signed int int32
Definition: Defs.h:68
Definition: Ref.h:46
Windows-specific implementation of the Thread class.
Definition: ThreadImpl.h:43
Windows specific implementation of Wait objects.
Definition: WaitImpl.h:43
Platform-independent definition of Wait objects.
Definition: Wait.h:42
virtual ~Wait()
Definition: Wait.cpp:60
void(* pfnWaitNotification_t)(void *_context)
Definition: Wait.h:53
static int32 Multiple(Wait **_objects, uint32 _numObjects, int32 _timeout=-1)
Definition: Wait.cpp:121
virtual bool IsSignalled()=0
static int32 Single(Wait *_object, int32 _timeout=-1)
Definition: Wait.h:77
@ Timeout_Infinite
Definition: Wait.h:50
@ Timeout_Immediate
Definition: Wait.h:49
Wait()
Definition: Wait.cpp:49
void RemoveWatcher(pfnWaitNotification_t _callback, void *_context)
Definition: Wait.cpp:94
void Notify()
Definition: Wait.cpp:110
void AddWatcher(pfnWaitNotification_t _callback, void *_context)
Definition: Wait.cpp:71
Definition: Bitfield.h:35