Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

MutexSemaphore.hpp

00001 #if   !defined(__MUTEXSEMAPHORE_HPP)
00002 #define  __MUTEXSEMAPHORE_HPP
00003 
00004 /*
00005   CoreLinux++ 
00006   Copyright (C) 1999,2000 CoreLinux Consortium
00007   
00008    The CoreLinux++ Library is free software; you can redistribute it and/or
00009    modify it under the terms of the GNU Library General Public License as
00010    published by the Free Software Foundation; either version 2 of the
00011    License, or (at your option) any later version.
00012 
00013    The CoreLinux++ Library Library is distributed in the hope that it will 
00014    be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016    Library General Public License for more details.
00017 
00018    You should have received a copy of the GNU Library General Public
00019    License along with the GNU C Library; see the file COPYING.LIB.  If not,
00020    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00021    Boston, MA 02111-1307, USA.  
00022 */
00023 
00024 #if   !defined(__COMMON_HPP)
00025 #include <Common.hpp>
00026 #endif
00027 
00028 #if   !defined(__SEMAPHORE_HPP)
00029 #include <Semaphore.hpp>
00030 #endif
00031 
00032 namespace corelinux
00033 {
00034    DECLARE_CLASS( MutexSemaphore );
00035 
00051    class MutexSemaphore : public Semaphore
00052    {
00053    public:
00054 
00055       //
00056       // Constructors and destructors
00057       //
00058 
00071                         MutexSemaphore
00072                            ( 
00073                               SemaphoreGroupPtr,
00074                               SemaphoreIdentifierRef,
00075                               bool AutoLock = false,
00076                               bool Recursive = true,
00077                               bool Balking = false
00078                            ) throw ( NullPointerException );
00079 
00081 
00082       virtual           ~MutexSemaphore( void );
00083 
00084       //
00085       // Accessors
00086       //
00087 
00089       
00090       virtual  bool isLocked( void ) ;
00091 
00092       //
00093       // Mutators
00094       //
00095 
00097       
00098       virtual  SemaphoreOperationStatus lockWithWait( void ) 
00099                         throw(SemaphoreException);
00100 
00102       
00103       virtual  SemaphoreOperationStatus lockWithNoWait( void )
00104                         throw(SemaphoreException);
00105 
00107       
00108 //      virtual  SemaphoreOperationStatus   lockWithTimeOut( Timer )
00109 //                   throw(SemaphoreException) = 0;
00110       
00112       
00113       virtual  SemaphoreOperationStatus release( void ) 
00114                         throw(SemaphoreException);
00115 
00116 
00117    protected:
00118 
00119       //
00120       // Constructors
00121       //
00123 
00124                            MutexSemaphore( void ) throw( Assertion );
00125 
00127 
00128                            MutexSemaphore( MutexSemaphoreCref ) 
00129                               throw( Assertion );
00130 
00131       //
00132       // Operator overloads
00133       //
00135 
00136                MutexSemaphoreRef operator=( MutexSemaphoreCref ) 
00137                               throw( Assertion );
00138 
00139    private:
00140 
00141    };
00142 
00143 }
00144 
00145 #endif // if !defined(__MUTEXSEMAPHORE_HPP)
00146 
00147 /*
00148    Common rcs information do not modify
00149    $Author: frankc $
00150    $Revision: 1.2 $
00151    $Date: 2000/06/02 11:51:52 $
00152    $Locker:  $
00153 */
00154 
00155 

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium