summaryrefslogtreecommitdiff
path: root/TAO/tao/poa_macros.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/poa_macros.h')
-rw-r--r--TAO/tao/poa_macros.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/TAO/tao/poa_macros.h b/TAO/tao/poa_macros.h
new file mode 100644
index 00000000000..b46ae1a10f8
--- /dev/null
+++ b/TAO/tao/poa_macros.h
@@ -0,0 +1,47 @@
+// Convenient macro for testing for deadlock, as well as for detecting
+// when mutexes fail.
+#define TAO_POA_WRITE_GUARD(MUTEX,OBJ,LOCK,ENV) \
+ do { \
+ ACE_Write_Guard<MUTEX> OBJ (LOCK); \
+ if (OBJ.locked () == 0) \
+ { \
+ CORBA::Exception *exception = new CORBA::OBJ_ADAPTER (CORBA::COMPLETED_NO); \
+ ENV.exception (exception); \
+ return; \
+ } \
+ } \
+ while (0);
+#define TAO_POA_READ_GUARD(MUTEX,OBJ,LOCK,ENV) \
+ do { \
+ ACE_Read_Guard<MUTEX> OBJ (LOCK); \
+ if (OBJ.locked () == 0) \
+ { \
+ CORBA::Exception *exception = new CORBA::OBJ_ADAPTER (CORBA::COMPLETED_NO); \
+ ENV.exception (exception); \
+ return; \
+ } \
+ } \
+ while (0);
+#define TAO_POA_WRITE_GUARD_RETURN(MUTEX,OBJ,LOCK,RETURN,ENV) \
+ do { \
+ ACE_Write_Guard<MUTEX> OBJ (LOCK); \
+ if (OBJ.locked () == 0) \
+ { \
+ CORBA::Exception *exception = new CORBA::OBJ_ADAPTER (CORBA::COMPLETED_NO); \
+ ENV.exception (exception); \
+ return RETURN; \
+ } \
+ } \
+ while (0);
+#define TAO_POA_READ_GUARD_RETURN(MUTEX,OBJ,LOCK,RETURN,ENV) \
+ do { \
+ ACE_Read_Guard<MUTEX> OBJ (LOCK); \
+ if (OBJ.locked () == 0) \
+ { \
+ CORBA::Exception *exception = new CORBA::OBJ_ADAPTER (CORBA::COMPLETED_NO); \
+ ENV.exception (exception); \
+ return RETURN; \
+ } \
+ } \
+ while (0);
+