(file) Return to SafeQueue.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2

  1 karl  1.10 //%2006////////////////////////////////////////////////////////////////////////
  2 chip  1.1  //
  3 karl  1.8  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4            // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6 karl  1.3  // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.8  // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl  1.9  // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 karl  1.10 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12            // EMC Corporation; Symantec Corporation; The Open Group.
 13 chip  1.1  //
 14            // Permission is hereby granted, free of charge, to any person obtaining a copy
 15            // of this software and associated documentation files (the "Software"), to
 16            // deal in the Software without restriction, including without limitation the
 17            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18            // sell copies of the Software, and to permit persons to whom the Software is
 19            // furnished to do so, subject to the following conditions:
 20 karl  1.3  // 
 21 chip  1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22            // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29            //
 30            //==============================================================================
 31            //
 32            // Author: Chip Vincent (cvincent@us.ibm.com)
 33            //
 34            // Modified By:
 35            //
 36            //%/////////////////////////////////////////////////////////////////////////////
 37            
 38            #ifndef Pegasus_SafeQueue_h
 39            #define Pegasus_SafeQueue_h
 40            
 41            #include <Pegasus/Common/Config.h>
 42 chip  1.1  #include <Pegasus/Common/Queue.h>
 43 kumpf 1.5  #include <Pegasus/Common/IPC.h>
 44 chip  1.1  
 45            PEGASUS_NAMESPACE_BEGIN
 46            
 47            template<class T>
 48 schuur 1.7  class SafeQueue
 49 chip   1.1  {
 50             public:
 51                 SafeQueue(void);
 52                 virtual ~SafeQueue(void);
 53             
 54                 void enqueue(const T & O);
 55                 T dequeue(void);
 56             
 57                 T & front(void);
 58                 const T & front(void) const;
 59             
 60                 T & back(void);
 61                 const T & back(void) const;
 62             
 63                 Uint32 size(void) const;
 64             
 65             protected:
 66                 mutable Mutex _mutex;
 67                 Queue<T> _queue;
 68             
 69             };
 70 chip   1.1  
 71             template<class T>
 72             SafeQueue<T>::SafeQueue(void)
 73             {
 74             }
 75             
 76             template<class T>
 77             SafeQueue<T>::~SafeQueue(void)
 78             {
 79             }
 80             
 81             template<class T>
 82             void SafeQueue<T>::enqueue(const T & O)
 83             {
 84 kumpf  1.5      AutoMutex lock(_mutex);
 85 chip   1.1  
 86                 _queue.enqueue(O);
 87             }
 88             
 89             template<class T>
 90             T SafeQueue<T>::dequeue(void)
 91             {
 92 kumpf  1.5      AutoMutex lock(_mutex);
 93 chip   1.1  
 94                 T O = _queue.front();
 95             
 96                 _queue.dequeue();
 97             
 98                 return(O);
 99             }
100             
101             template<class T>
102             T & SafeQueue<T>::front(void)
103             {
104 kumpf  1.5      AutoMutex lock(_mutex);
105 chip   1.1  
106                 return(_queue.front());
107             }
108             
109             template<class T>
110             const T & SafeQueue<T>::front(void) const
111             {
112 kumpf  1.5      AutoMutex lock(_mutex);
113 chip   1.1  
114                 return(_queue.front());
115             }
116             
117             template<class T>
118             T & SafeQueue<T>::back(void)
119             {
120 kumpf  1.5      AutoMutex lock(_mutex);
121 chip   1.1  
122                 return(_queue.back());
123             }
124             
125             template<class T>
126             const T & SafeQueue<T>::back(void) const
127             {
128 kumpf  1.5      AutoMutex lock(_mutex);
129 chip   1.1  
130                 return(_queue.back());
131             }
132             
133             template<class T>
134             Uint32 SafeQueue<T>::size(void) const
135             {
136 kumpf  1.5      AutoMutex lock(_mutex);
137 chip   1.1  
138                 return(_queue.size());
139             }
140             
141             PEGASUS_NAMESPACE_END
142             
143             #endif

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2