00001
00002
00003
00004
00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00006
00007 namespace TAO
00008 {
00009 template <typename TT, typename TRDT, typename PSTRAT>
00010 ACE_INLINE int
00011 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::cache_transport (
00012 transport_descriptor_type *prop,
00013 transport_type *transport,
00014 Cache_Entries_State state)
00015 {
00016
00017 Cache_ExtId ext_id (prop);
00018 int retval = 0;
00019 {
00020 ACE_MT (ACE_GUARD_RETURN (ACE_Lock,
00021 guard,
00022 *this->cache_lock_,
00023 -1));
00024 Cache_IntId int_id (transport);
00025
00026
00027 if (int_id.is_connected () && state == ENTRY_CONNECTING)
00028 int_id.recycle_state (ENTRY_IDLE_AND_PURGABLE);
00029 else
00030 int_id.recycle_state (state);
00031
00032 retval = this->bind_i (ext_id, int_id);
00033 }
00034
00035 return retval;
00036 }
00037
00038 template <typename TT, typename TRDT, typename PSTRAT>
00039 ACE_INLINE int
00040 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::purge_entry (HASH_MAP_ENTRY *&entry)
00041 {
00042 ACE_MT (ACE_GUARD_RETURN (ACE_Lock, guard, *this->cache_lock_, -1));
00043 return this->purge_entry_i (entry);
00044 }
00045
00046 template <typename TT, typename TRDT, typename PSTRAT>
00047 ACE_INLINE void
00048 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::mark_invalid (HASH_MAP_ENTRY *entry)
00049 {
00050 ACE_MT (ACE_GUARD (ACE_Lock, guard, *this->cache_lock_));
00051 this->mark_invalid_i (entry);
00052 }
00053
00054 template <typename TT, typename TRDT, typename PSTRAT>
00055 ACE_INLINE void
00056 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::mark_connected (HASH_MAP_ENTRY *entry, bool state)
00057 {
00058 ACE_MT (ACE_GUARD (ACE_Lock, guard, *this->cache_lock_));
00059 if (entry == 0)
00060 return;
00061
00062 if (TAO_debug_level > 9 && state != entry->item ().is_connected ())
00063 ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - Transport_Cache_Manager_T")
00064 ACE_TEXT ("::mark_connected, %s Transport[%d]\n"),
00065 (state ? ACE_TEXT("true") : ACE_TEXT("false")),
00066 entry->item ().transport ()->id ()
00067 ));
00068 entry->item().is_connected (state);
00069 }
00070
00071 template <typename TT, typename TRDT, typename PSTRAT>
00072 ACE_INLINE int
00073 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::make_idle (HASH_MAP_ENTRY *entry)
00074 {
00075 ACE_MT (ACE_GUARD_RETURN (ACE_Lock, guard, *this->cache_lock_, -1));
00076 return this->make_idle_i (entry);
00077 }
00078
00079 template <typename TT, typename TRDT, typename PSTRAT>
00080 ACE_INLINE typename Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::Find_Result
00081 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::find (transport_descriptor_type *prop,
00082 transport_type *&transport,
00083 size_t &busy_count)
00084 {
00085 ACE_MT (ACE_GUARD_RETURN (ACE_Lock,
00086 guard,
00087 *this->cache_lock_,
00088 CACHE_FOUND_NONE));
00089
00090 return this->find_i (prop, transport, busy_count);
00091 }
00092
00093 template <typename TT, typename TRDT, typename PSTRAT>
00094 ACE_INLINE int
00095 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::
00096 close (Connection_Handler_Set &handlers)
00097 {
00098
00099
00100
00101
00102 if (this->cache_lock_ == 0)
00103 return -1;
00104
00105 ACE_MT (ACE_GUARD_RETURN (ACE_Lock,
00106 guard,
00107 *this->cache_lock_,
00108 -1));
00109
00110 return this->close_i (handlers);
00111 }
00112
00113 template <typename TT, typename TRDT, typename PSTRAT>
00114 ACE_INLINE bool
00115 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::blockable_client_transports (
00116 Connection_Handler_Set &handlers)
00117 {
00118 ACE_MT (ACE_GUARD_RETURN (ACE_Lock,
00119 guard,
00120 *this->cache_lock_,
00121 false));
00122
00123 return this->blockable_client_transports_i (handlers);
00124 }
00125
00126 template <typename TT, typename TRDT, typename PSTRAT>
00127 ACE_INLINE size_t
00128 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::current_size (void) const
00129 {
00130 return this->cache_map_.current_size ();
00131 }
00132
00133 template <typename TT, typename TRDT, typename PSTRAT>
00134 ACE_INLINE size_t
00135 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::total_size (void) const
00136 {
00137 return this->cache_map_.total_size ();
00138 }
00139
00140 template <typename TT, typename TRDT, typename PSTRAT>
00141 ACE_INLINE typename Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::HASH_MAP &
00142 Transport_Cache_Manager_T<TT, TRDT, PSTRAT>::map (void)
00143 {
00144 return this->cache_map_;
00145 }
00146 }
00147
00148 TAO_END_VERSIONED_NAMESPACE_DECL