Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# ACE_Cached_Connect_Strategy_Ex Class Template Reference

A connection strategy which caches connections to peers (represented by <SVC_HANDLER> instances), thereby allowing subsequent re-use of unused, but available, connections. More...

`#include <Cached_Connect_Strategy_T.h>`

Inheritance diagram for ACE_Cached_Connect_Strategy_Ex

[legend]
Collaboration diagram for ACE_Cached_Connect_Strategy_Ex:

[legend]
List of all members.

## Public Types
typedef ACE_Refcounted_Hash_Recyclable< ACE_PEER_CONNECTOR_ADDR> | REFCOUNTED_HASH_RECYCLABLE_ADDRESS
typedef ACE_Hash_Cache_Map_Manager< REFCOUNTED_HASH_RECYCLABLE_ADDRESS, SVC_HANDLER *, ACE_Hash<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, ACE_Equal_To<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, CACHING_STRATEGY, ATTRIBUTES> | CONNECTION_CACHE
typedef ACE_TYPENAME CONNECTION_CACHE::CACHE_ENTRY | CONNECTION_CACHE_ENTRY
typedef ACE_TYPENAME CONNECTION_CACHE::key_type | KEY
typedef ACE_TYPENAME CONNECTION_CACHE::mapped_type | VALUE
typedef ACE_Recyclable_Handler_Cleanup_Strategy< REFCOUNTED_HASH_RECYCLABLE_ADDRESS, ACE_Pair<SVC_HANDLER *, ATTRIBUTES>, ACE_Hash_Map_Manager_Ex<REFCOUNTED_HASH_RECYCLABLE_ADDRESS, ACE_Pair<SVC_HANDLER *, ATTRIBUTES>, ACE_Hash<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, ACE_Equal_To<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, MUTEX> > | CLEANUP_STRATEGY
typedef ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_2, MUTEX> | CCSBASE
## Public Methods
| ACE_Cached_Connect_Strategy_Ex (CACHING_STRATEGY &caching_s, ACE_Creation_Strategy<SVC_HANDLER> *cre_s = 0, ACE_Concurrency_Strategy<SVC_HANDLER> *con_s = 0, ACE_Recycling_Strategy<SVC_HANDLER> *rec_s = 0, MUTEX *lock = 0, int delete_lock = 0)
| Constructor.
virtual | ~ACE_Cached_Connect_Strategy_Ex (void)
| Destructor.
virtual int | purge_connections (void)
| Explicit purging of connection entries from the connection cache.
virtual int | mark_as_closed_i (const void *recycling_act)
| Mark as closed (non-locking version). This is used during the cleanup of the connections purged.
void | cleanup (void)
CACHING_STRATEGY& | caching_strategy (void)
## Protected Methods
int | find (ACE_Refcounted_Hash_Recyclable<ACE_PEER_CONNECTOR_ADDR> &search_addr, ACE_Hash_Map_Entry<ACE_Refcounted_Hash_Recyclable<ACE_PEER_CONNECTOR_ADDR>, ACE_Pair<SVC_HANDLER *, ATTRIBUTES> > *&entry)
| Find an idle handle.
virtual int | purge_i (const void *recycling_act)
| Remove from cache (non-locking version).
virtual int | cache_i (const void *recycling_act)
| Add to cache (non-locking version).
virtual int | recycle_state_i (const void *recycling_act, ACE_Recyclable_State new_state)
| Get/Set <recycle_state> (non-locking version).
virtual ACE_Recyclable_State | recycle_state_i (const void *recycling_act) const
virtual int | cleanup_hint_i (const void *recycling_act, void **act_holder)
| Cleanup hint and reset <*act_holder> to zero if .
int | check_hint_i (SVC_HANDLER *&sh, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, int reuse_addr, int flags, int perms, ACE_Hash_Map_Entry<ACE_Refcounted_Hash_Recyclable<ACE_PEER_CONNECTOR_ADDR>, ACE_Pair<SVC_HANDLER *, ATTRIBUTES> > *&entry, int &found)
virtual int | find_or_create_svc_handler_i (SVC_HANDLER *&sh, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, int reuse_addr, int flags, int perms, ACE_Hash_Map_Entry<ACE_Refcounted_Hash_Recyclable<ACE_PEER_CONNECTOR_ADDR>, ACE_Pair<SVC_HANDLER *, ATTRIBUTES> > *&entry, int &found)
virtual int | connect_svc_handler_i (SVC_HANDLER *&sh, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, int reuse_addr, int flags, int perms, int &found)
virtual int | cached_connect (SVC_HANDLER *&sh, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, int reuse_addr, int flags, int perms)
## Protected Attributes
CONNECTION_CACHE | connection_cache_
| Table that maintains the cache of connected <SVC_HANDLER>s.

## Detailed Description

### template<class SVC_HANDLER, ACE_PEER_CONNECTOR_1, class CACHING_STRATEGY, class ATTRIBUTES, class MUTEX> template class ACE_Cached_Connect_Strategy_Ex

A connection strategy which caches connections to peers (represented by <SVC_HANDLER> instances), thereby allowing subsequent re-use of unused, but available, connections.

<Cached_Connect_Strategy> is intended to be used as a plug-in connection strategy for . It's added value is re-use of established connections and tweaking the role of the cache as per the caching strategy.

## Member Typedef Documentation

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_Cached_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2, MUTEX> ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::CCSBASE

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_Recyclable_Handler_Cleanup_Strategy<REFCOUNTED_HASH_RECYCLABLE_ADDRESS, ACE_Pair<SVC_HANDLER *, ATTRIBUTES>, ACE_Hash_Map_Manager_Ex<REFCOUNTED_HASH_RECYCLABLE_ADDRESS, ACE_Pair<SVC_HANDLER *, ATTRIBUTES>, ACE_Hash<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, ACE_Equal_To<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, MUTEX> > ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::CLEANUP_STRATEGY

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_Hash_Cache_Map_Manager<REFCOUNTED_HASH_RECYCLABLE_ADDRESS, SVC_HANDLER *, ACE_Hash<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, ACE_Equal_To<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, CACHING_STRATEGY, ATTRIBUTES> ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::CONNECTION_CACHE

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_TYPENAME CONNECTION_CACHE::CACHE_ENTRY ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::CONNECTION_CACHE_ENTRY

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_TYPENAME CONNECTION_CACHE::key_type ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::KEY

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_Refcounted_Hash_Recyclable<ACE_PEER_CONNECTOR_ADDR> ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::REFCOUNTED_HASH_RECYCLABLE_ADDRESS

| Reimplemented from ACE_Cached_Connect_Strategy. Reimplemented in ACE_Bounded_Cached_Connect_Strategy.

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
typedef ACE_TYPENAME CONNECTION_CACHE::mapped_type ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::VALUE

## Constructor & Destructor Documentation

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX> ( | CACHING_STRATEGY & caching_s,
| ACE_Creation_Strategy< SVC_HANDLER >* cre_s = 0,
| ACE_Concurrency_Strategy< SVC_HANDLER >* con_s = 0,
| ACE_Recycling_Strategy< SVC_HANDLER >* rec_s = 0,
| MUTEX * lock = 0,
| int delete_lock = 0 )

| Constructor.

template<ACE_T1>
ACE_Cached_Connect_Strategy_Ex<>::~ACE_Cached_Connect_Strategy_Ex<> ( | void )`[virtual]`

| Destructor.

## Member Function Documentation

template<ACE_T1>
int ACE_Cached_Connect_Strategy_Ex<>::cache_i ( | const void * recycling_act )`[protected, virtual]`

| Add to cache (non-locking version). Reimplemented from ACE_Cached_Connect_Strategy.

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
int ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::cached_connect ( | SVC_HANDLER *& sh,
| const ACE_PEER_CONNECTOR_ADDR & remote_addr,
| ACE_Time_Value * timeout,
| const ACE_PEER_CONNECTOR_ADDR & local_addr,
| int reuse_addr,
| int flags,
| int perms )`[protected, virtual]`

| Connection of the svc_handler with the remote host. This method also encapsulates the connection done with auto_purging under the hood. If the connect failed due to the process running out of file descriptors then, auto_purging of some connections are done from the CONNECTION_CACHE. This frees the descriptors which get used in the connect process and hence the connect operation can succeed.

template<ACE_T1>
CACHING_STRATEGY & ACE_Cached_Connect_Strategy_Ex< ACE_T2 >::caching_strategy ( | void )

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
int ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::check_hint_i ( | SVC_HANDLER *& sh,
| const ACE_PEER_CONNECTOR_ADDR & remote_addr,
| ACE_Time_Value * timeout,
| const ACE_PEER_CONNECTOR_ADDR & local_addr,
| int reuse_addr,
| int flags,
| int perms,
| ACE_Hash_Map_Entry< ACE_Refcounted_Hash_Recyclable< ACE_PEER_CONNECTOR_ADDR >,ACE_Pair< SVC_HANDLER *,ATTRIBUTES > >*& entry,
| int & found )`[protected]`

template<ACE_T1>
void ACE_Cached_Connect_Strategy_Ex<>::cleanup ( | void )

| Since g++ version < 2.8 arent happy with templates, this special method had to be devised to avoid memory leaks and perform cleanup of the <connection_cache_>.

template<ACE_T1>
int ACE_Cached_Connect_Strategy_Ex<>::cleanup_hint_i ( | const void * recycling_act,
| void ** act_holder )`[protected, virtual]`

| Cleanup hint and reset <*act_holder> to zero if . Reimplemented from ACE_Cached_Connect_Strategy.

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
virtual int ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::connect_svc_handler_i ( | SVC_HANDLER *& sh,
| const ACE_PEER_CONNECTOR_ADDR & remote_addr,
| ACE_Time_Value * timeout,
| const ACE_PEER_CONNECTOR_ADDR & local_addr,
| int reuse_addr,
| int flags,
| int perms,
| int & found )`[protected, virtual]`

| Reimplemented from ACE_Cached_Connect_Strategy.

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
int ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::find ( | ACE_Refcounted_Hash_Recyclable< ACE_PEER_CONNECTOR_ADDR >& search_addr,
| ACE_Hash_Map_Entry< ACE_Refcounted_Hash_Recyclable< ACE_PEER_CONNECTOR_ADDR >,ACE_Pair< SVC_HANDLER *,ATTRIBUTES > >*& entry )`[protected]`

| Find an idle handle.

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
virtual int ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::find_or_create_svc_handler_i ( | SVC_HANDLER *& sh,
| const ACE_PEER_CONNECTOR_ADDR & remote_addr,
| ACE_Time_Value * timeout,
| const ACE_PEER_CONNECTOR_ADDR & local_addr,
| int reuse_addr,
| int flags,
| int perms,
| ACE_Hash_Map_Entry< ACE_Refcounted_Hash_Recyclable< ACE_PEER_CONNECTOR_ADDR >,ACE_Pair< SVC_HANDLER *,ATTRIBUTES > >*& entry,
| int & found )`[protected, virtual]`

| Reimplemented in ACE_Bounded_Cached_Connect_Strategy.

template<ACE_T1>
int ACE_Cached_Connect_Strategy_Ex<>::mark_as_closed_i ( | const void * recycling_act )`[virtual]`

| Mark as closed (non-locking version). This is used during the cleanup of the connections purged. Reimplemented from ACE_Cached_Connect_Strategy.

template<ACE_T1>
int ACE_Cached_Connect_Strategy_Ex<>::purge_connections ( | void )`[virtual]`

| Explicit purging of connection entries from the connection cache.

template<ACE_T1>
int ACE_Cached_Connect_Strategy_Ex<>::purge_i ( | const void * recycling_act )`[protected, virtual]`

| Remove from cache (non-locking version). Reimplemented from ACE_Cached_Connect_Strategy.

template<ACE_T1>
ACE_Recyclable_State ACE_Cached_Connect_Strategy_Ex< ACE_T2 >::recycle_state_i ( | const void * recycling_act ) const`[protected, virtual]`

| Reimplemented from ACE_Cached_Connect_Strategy.

template<ACE_T1>
int ACE_Cached_Connect_Strategy_Ex<>::recycle_state_i ( | const void * recycling_act,
| ACE_Recyclable_State new_state )`[protected, virtual]`

| Get/Set <recycle_state> (non-locking version). Reimplemented from ACE_Cached_Connect_Strategy.

## Member Data Documentation

template<classSVC_HANDLER, ACE_PEER_CONNECTOR_1, classCACHING_STRATEGY, classATTRIBUTES, classMUTEX>
CONNECTION_CACHE ACE_Cached_Connect_Strategy_Ex<SVC_HANDLER, , CACHING_STRATEGY, ATTRIBUTES, MUTEX>::connection_cache_`[protected]`

| Table that maintains the cache of connected <SVC_HANDLER>s.

The documentation for this class was generated from the following files:

- Cached_Connect_Strategy_T.h
- Cached_Connect_Strategy_T.cpp