OpenZWave Library  1.6.897
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 
35 namespace 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 
void RemoveWatcher(pfnWaitNotification_t _callback, void *_context)
Definition: Wait.cpp:92
friend class WaitImpl
Definition: Wait.h:48
void Notify()
Definition: Wait.cpp:104
void AddWatcher(pfnWaitNotification_t _callback, void *_context)
Definition: Wait.cpp:73
Definition: Bitfield.cpp:30
void(* pfnWaitNotification_t)(void *_context)
Definition: Wait.h:58
static int32 Multiple(Wait **_objects, uint32 _numObjects, int32 _timeout=-1)
Definition: Wait.cpp:113
Platform-independent definition of Wait objects.
Definition: Wait.h:46
virtual ~Wait()
Definition: Wait.cpp:64
signed int int32
Definition: Defs.h:91
unsigned int uint32
Definition: Defs.h:92
static int32 Single(Wait *_object, int32 _timeout=-1)
Definition: Wait.h:82
friend class ThreadImpl
Definition: Wait.h:49
Wait()
Definition: Wait.cpp:55