Main Page | Modules | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

xmog_lock_holder.h

00001 /*
00002  * Copyright 1999-2006 by Codemesh, Inc.  ALL RIGHTS RESERVED.
00003  */
00004 
00005 #ifndef xmogLockHolder_inc
00006 #define xmogLockHolder_inc
00007 
00008 
00009 #include "xmog_base.h"
00010 #include "xmog_java_ref.h"
00011 #include "xmog_java_class.h"
00012 
00013 
00047 class xmog_lock_holder
00048 {
00049 private:
00050     
00051     xmog_java_ref &     toLock_;
00052 
00053     int                 holding_;
00054 
00055     xmog_lock_holder( const xmog_lock_holder & );
00056     xmog_lock_holder &  operator = ( const xmog_lock_holder & );
00057 
00058 public:
00059 
00063     xmog_lock_holder( xmog_java_ref & _toLock ) : 
00064         toLock_( _toLock ), 
00065         holding_( 0 )
00066     {
00067         try
00068         {
00069 #       if !defined(XMOG_NULL_NAME)
00070             if( toLock_ != null )
00071             {
00072                 toLock_.xmog_monitor_enter();
00073                 holding_ = 1;
00074             }
00075 #       else
00076             if( toLock_ != XMOG_NULL_NAME )
00077             {
00078                 toLock_.xmog_monitor_enter();
00079                 holding_ = 1;
00080             }
00081 #       endif
00082         }
00083         catch( xmog_exception & )
00084         {
00085             throw;
00086         }
00087     }
00088 
00092     ~xmog_lock_holder()
00093     {
00094         if( holding_ )
00095         {
00096             toLock_.xmog_monitor_exit();
00097         }
00098     }
00099 };
00100 
00101 
00102 #endif /* xmogLockHolder_inc */

Generated on Wed May 31 14:01:19 2006 for Shared Codemesh Runtime Library API Reference by  doxygen 1.4.1