/* -*- C++ -*- */ //============================================================================= /** * @file Locking.h * * $Id$ * * @author Marina Spivak * @author Seth Widoff * @author Irfan Pyarali */ //============================================================================= #ifndef TAO_LOCKING_H #define TAO_LOCKING_H #include /**/ "ace/pre.h" // Macros for obtaining read/write locks that are // automatically released at the end of scope. // In case of failure, CORBA::SystemException is thrown. #define TAO_WRITE_GUARD(MUTEX,OBJ,LOCK) \ ACE_Write_Guard OBJ (LOCK); \ if (OBJ.locked () == 0) \ TAO_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_NO)); #define TAO_READ_GUARD(MUTEX,OBJ,LOCK) \ ACE_Read_Guard OBJ (LOCK); \ if (OBJ.locked () == 0) \ TAO_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_NO)); #define TAO_WRITE_GUARD_RETURN(MUTEX,OBJ,LOCK,RETURN) \ ACE_Write_Guard OBJ (LOCK); \ if (OBJ.locked () == 0) \ TAO_THROW_RETURN (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_NO), RETURN); #define TAO_READ_GUARD_RETURN(MUTEX,OBJ,LOCK,RETURN) \ ACE_Read_Guard OBJ (LOCK); \ if (OBJ.locked () == 0) \ TAO_THROW_RETURN (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_NO), RETURN); #include /**/ "ace/post.h" #endif /* TAO_LOCKING_H */