00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file RequestInterceptor_Adapter_Impl.cpp 00006 * 00007 * $Id: RequestInterceptor_Adapter_Impl.cpp 85371 2009-05-18 13:39:38Z sma $ 00008 * 00009 * This file an adapter class to simplify the support of 00010 * interceptors. 00011 */ 00012 //============================================================================= 00013 00014 #include "tao/PI/RequestInterceptor_Adapter_Impl.h" 00015 00016 #if TAO_HAS_INTERCEPTORS == 1 00017 00018 #include "tao/ORB_Core.h" 00019 #include "tao/PI/RequestInterceptor_Adapter_Impl.h" 00020 #include "tao/PI/PICurrent.h" 00021 #include "tao/PI/PICurrent_Impl.h" 00022 00023 ACE_RCSID (tao, 00024 TAO_RequestInterceptorAdapter_Impl, 00025 "$Id: RequestInterceptor_Adapter_Impl.cpp 85371 2009-05-18 13:39:38Z sma $") 00026 00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00028 00029 TAO_RequestInterceptor_Adapter_Impl::~TAO_RequestInterceptor_Adapter_Impl (void) 00030 { 00031 } 00032 00033 void 00034 TAO_RequestInterceptor_Adapter_Impl::popTSC ( 00035 TAO_ORB_Core *orb_core) 00036 { 00037 // Retrieve the thread scope current (no TSS access incurred yet). 00038 TAO::PICurrent 00039 *pi_current= dynamic_cast <TAO::PICurrent *> ( 00040 orb_core->pi_current ()); 00041 00042 // If the slot count is zero, there is nothing to copy. Prevent any 00043 // copying (and hence TSS accesses) from occurring. 00044 if (pi_current && pi_current->slot_count ()) 00045 { 00046 pi_current->tsc ()->pop (); 00047 } 00048 } 00049 00050 void 00051 TAO_RequestInterceptor_Adapter_Impl::pushTSC ( 00052 TAO_ORB_Core *orb_core) 00053 { 00054 // Retrieve the thread scope current (no TSS access incurred yet). 00055 TAO::PICurrent 00056 *pi_current= dynamic_cast <TAO::PICurrent *> ( 00057 orb_core->pi_current ()); 00058 00059 // If the slot count is zero, there is nothing to copy. Prevent any 00060 // copying (and hence TSS accesses) from occurring. 00061 if (pi_current && pi_current->slot_count ()) 00062 { 00063 pi_current->tsc ()->push (); 00064 } 00065 } 00066 00067 TAO_END_VERSIONED_NAMESPACE_DECL 00068 00069 #endif /* TAO_HAS_INTERCEPTORS == 1 */