#include <Cached_Connect_Strategy_T.h>
Inheritance diagram for ACE_Cached_Connect_Strategy_Ex
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. |
<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.
|
|
|
|
|
|
|
|
|
|
|
Reimplemented from ACE_Cached_Connect_Strategy. Reimplemented in ACE_Bounded_Cached_Connect_Strategy. |
|
|
|
Constructor.
|
|
Destructor.
|
|
Add to cache (non-locking version).
Reimplemented from ACE_Cached_Connect_Strategy. |
|
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. |
|
|
|
|
|
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_>. |
|
Cleanup hint and reset <*act_holder> to zero if .
Reimplemented from ACE_Cached_Connect_Strategy. |
|
Reimplemented from ACE_Cached_Connect_Strategy. |
|
Find an idle handle.
|
|
Reimplemented in ACE_Bounded_Cached_Connect_Strategy. |
|
Mark as closed (non-locking version). This is used during the cleanup of the connections purged.
Reimplemented from ACE_Cached_Connect_Strategy. |
|
Explicit purging of connection entries from the connection cache.
|
|
Remove from cache (non-locking version).
Reimplemented from ACE_Cached_Connect_Strategy. |
|
Reimplemented from ACE_Cached_Connect_Strategy. |
|
Get/Set <recycle_state> (non-locking version).
Reimplemented from ACE_Cached_Connect_Strategy. |
|
Table that maintains the cache of connected <SVC_HANDLER>s.
|