ACE
6.3.3
|
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 <Strategies_T.h>
Public Member Functions | |
ACE_Cached_Connect_Strategy (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 *mutex=0, bool delete_lock=false) | |
Constructor. More... | |
virtual | ~ACE_Cached_Connect_Strategy (void) |
Destructor. More... | |
virtual int | open (ACE_Creation_Strategy< SVC_HANDLER > *cre_s, ACE_Concurrency_Strategy< SVC_HANDLER > *con_s, ACE_Recycling_Strategy< SVC_HANDLER > *rec_s) |
virtual int | make_svc_handler (SVC_HANDLER *&sh) |
Template method for making a new <svc_handler> More... | |
virtual int | activate_svc_handler (SVC_HANDLER *svc_handler) |
Template method for activating a new svc_handler. More... | |
virtual int | assign_recycler (SVC_HANDLER *svc_handler, ACE_Connection_Recycling_Strategy *recycler, const void *recycling_act) |
virtual int | prepare_for_recycling (SVC_HANDLER *svc_handler) |
Template method for preparing the svc_handler for recycling. More... | |
virtual int | connect_svc_handler (SVC_HANDLER *&sh, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, bool reuse_addr, int flags, int perms) |
virtual int | connect_svc_handler (SVC_HANDLER *&sh, SVC_HANDLER *&sh_copy, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, bool reuse_addr, int flags, int perms) |
virtual int | purge (const void *recycling_act) |
Remove from cache. More... | |
virtual int | cache (const void *recycling_act) |
Add to cache. More... | |
virtual int | recycle_state (const void *recycling_act, ACE_Recyclable_State new_state) |
Get/Set <recycle_state>. More... | |
virtual ACE_Recyclable_State | recycle_state (const void *recycling_act) const |
Get/Set recycle_state. More... | |
virtual int | mark_as_closed (const void *recycling_act) |
Mark as closed. More... | |
virtual int | mark_as_closed_i (const void *recycling_act) |
virtual int | cleanup_hint (const void *recycling_act, void **act_holder=0) |
Cleanup hint and reset <*act_holder> to zero if <act_holder != 0>. More... | |
virtual ACE_Creation_Strategy< SVC_HANDLER > * | creation_strategy (void) const |
virtual ACE_Recycling_Strategy< SVC_HANDLER > * | recycling_strategy (void) const |
virtual ACE_Concurrency_Strategy< SVC_HANDLER > * | concurrency_strategy (void) const |
Public Member Functions inherited from ACE_Connection_Recycling_Strategy | |
ACE_Connection_Recycling_Strategy (void) | |
virtual | ~ACE_Connection_Recycling_Strategy (void) |
Virtual Destructor. More... | |
Public Member Functions inherited from ACE_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_2 > | |
ACE_Connect_Strategy (void) | |
Default constructor. More... | |
virtual ACE_PEER_CONNECTOR & | connector (void) const |
Return a reference to the <peer_connector_>. More... | |
virtual | ~ACE_Connect_Strategy (void) |
void | dump (void) const |
Dump the state of an object. More... | |
Protected Member Functions | |
virtual int | new_connection (SVC_HANDLER *&sh, const ACE_PEER_CONNECTOR_ADDR &remote_addr, ACE_Time_Value *timeout, const ACE_PEER_CONNECTOR_ADDR &local_addr, bool reuse_addr, int flags, int perms) |
Creates a new connection. More... | |
int | find (REFCOUNTED_HASH_RECYCLABLE_ADDRESS &search_addr, CONNECTION_MAP_ENTRY *&entry) |
Find an idle handle. More... | |
virtual int | purge_i (const void *recycling_act) |
Remove from cache (non-locking version). More... | |
virtual int | cache_i (const void *recycling_act) |
Add to cache (non-locking version). More... | |
virtual int | recycle_state_i (const void *recycling_act, ACE_Recyclable_State new_state) |
Set <recycle_state> (non-locking version). More... | |
virtual ACE_Recyclable_State | recycle_state_i (const void *recycling_act) const |
Get <recycle_state> (non-locking version). More... | |
virtual int | cleanup_hint_i (const void *recycling_act, void **act_holder) |
Cleanup hint and reset <*act_holder> to zero if <act_holder != 0>. More... | |
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, bool reuse_addr, int flags, int perms, CONNECTION_MAP_ENTRY *&entry, int &found) |
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, bool reuse_addr, int flags, int perms, CONNECTION_MAP_ENTRY *&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, bool reuse_addr, int flags, int perms, int &found) |
Protected Attributes | |
CONNECTION_MAP | connection_map_ |
Table that maintains the cache of connected SVC_HANDLERs. More... | |
MUTEX * | lock_ |
Mutual exclusion for this object. More... | |
bool | delete_lock_ |
Mutual exclusion for this object. More... | |
REVERSE_MUTEX * | reverse_lock_ |
Reverse lock. More... | |
CREATION_STRATEGY * | creation_strategy_ |
Creation strategy for an <Connector>. More... | |
bool | delete_creation_strategy_ |
CONCURRENCY_STRATEGY * | concurrency_strategy_ |
Concurrency strategy for an <Connector>. More... | |
bool | delete_concurrency_strategy_ |
RECYCLING_STRATEGY * | recycling_strategy_ |
Recycling strategy for an <Connector>. More... | |
bool | delete_recycling_strategy_ |
Protected Attributes inherited from ACE_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_2 > | |
ACE_PEER_CONNECTOR | connector_ |
Factory that establishes connections actively. More... | |
Additional Inherited Members | |
Public Attributes inherited from ACE_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_2 > | |
ACE_ALLOC_HOOK_DECLARE | |
Declare the dynamic allocation hooks. More... | |
A connection strategy which caches connections to peers (represented by SVC_HANDLER instances), thereby allowing subsequent re-use of unused, but available, connections.
<ACE_Cached_Connect_Strategy> is intended to be used as a plug-in connection strategy for ACE_Strategy_Connector. It's added value is re-use of established connections.
typedef ACE_Concurrency_Strategy<SVC_HANDLER> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::CONCURRENCY_STRATEGY |
typedef ACE_Concurrency_Strategy<SVC_HANDLER> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::concurrency_strategy_type |
typedef ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::CONNECT_STRATEGY |
typedef ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::connect_strategy_type |
typedef ACE_Hash_Map_Manager_Ex<REFCOUNTED_HASH_RECYCLABLE_ADDRESS, SVC_HANDLER *, ACE_Hash<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, ACE_Equal_To<REFCOUNTED_HASH_RECYCLABLE_ADDRESS>, ACE_Null_Mutex> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::CONNECTION_MAP |
typedef CONNECTION_MAP::ENTRY ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::CONNECTION_MAP_ENTRY |
typedef CONNECTION_MAP::ITERATOR ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::CONNECTION_MAP_ITERATOR |
typedef ACE_Creation_Strategy<SVC_HANDLER> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::CREATION_STRATEGY |
typedef ACE_Creation_Strategy<SVC_HANDLER> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::creation_strategy_type |
typedef ACE_Recycling_Strategy<SVC_HANDLER> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::RECYCLING_STRATEGY |
typedef ACE_Recycling_Strategy<SVC_HANDLER> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::recycling_strategy_type |
typedef ACE_Refcounted_Hash_Recyclable<ACE_PEER_CONNECTOR_ADDR> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::REFCOUNTED_HASH_RECYCLABLE_ADDRESS |
typedef ACE_Reverse_Lock<MUTEX> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::REVERSE_MUTEX |
typedef ACE_Cached_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2, MUTEX> ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::SELF |
ACE_Cached_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_1, MUTEX >::ACE_Cached_Connect_Strategy | ( | 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 * | mutex = 0 , |
||
bool | delete_lock = false |
||
) |
Constructor.
|
virtual |
Destructor.
|
virtual |
Template method for activating a new svc_handler.
|
virtual |
Template method for setting the recycler information of the svc_handler.
|
virtual |
Add to cache.
Implements ACE_Connection_Recycling_Strategy.
|
protectedvirtual |
Add to cache (non-locking version).
Reimplemented in ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_1, CACHING_STRATEGY, ATTRIBUTES, MUTEX >, and ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX >.
|
protected |
|
virtual |
Cleanup hint and reset <*act_holder> to zero if <act_holder != 0>.
Implements ACE_Connection_Recycling_Strategy.
|
protectedvirtual |
Cleanup hint and reset <*act_holder> to zero if <act_holder != 0>.
Reimplemented in ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_1, CACHING_STRATEGY, ATTRIBUTES, MUTEX >, and ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX >.
|
virtual |
|
virtual |
Checks to see if there is already a <SVC_HANDLER> in the cache connected to the <remote_addr>. If so, we return this pointer. Otherwise we establish the connection, put it into the cache, and return the SVC_HANDLER pointer. <[NOTE]>: the <{reuse_addr}> argument does NOT control re-use of addresses in the cache. Rather, if the underlying protocol requires a "dead time" prior to re-use of its addresses (TCP is a classic example of this), <{and}> the protocol provides a means by which to defeat the dead time, setting this argument to non-zero will defeat the dead-time requirement. <{Dev. Note: We might want to consider enhancing the interface at some point so that this also controls re-use of the cache.}>
Reimplemented from ACE_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >.
|
virtual |
The default behavior delegates to the <connect> method of the <PEER_CONNECTOR::connect>. Please check the documentation in Connector.h for more details.
Reimplemented from ACE_Connect_Strategy< SVC_HANDLER, ACE_PEER_CONNECTOR_2 >.
|
protectedvirtual |
|
virtual |
|
protected |
Find an idle handle.
|
protected |
|
virtual |
Template method for making a new <svc_handler>
|
virtual |
Mark as closed.
Implements ACE_Connection_Recycling_Strategy.
|
virtual |
Mark as closed (non-locking version). This method needs to be public as it is used in the cleanup of handlers where teh locked version causes a deadlock.
Implements ACE_Connection_Recycling_Strategy.
Reimplemented in ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_1, CACHING_STRATEGY, ATTRIBUTES, MUTEX >, and ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX >.
|
protectedvirtual |
Creates a new connection.
|
virtual |
This methods allow you to change the strategies used by the cached connector.
|
virtual |
Template method for preparing the svc_handler for recycling.
|
virtual |
Remove from cache.
Implements ACE_Connection_Recycling_Strategy.
|
protectedvirtual |
Remove from cache (non-locking version).
Reimplemented in ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_1, CACHING_STRATEGY, ATTRIBUTES, MUTEX >, and ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX >.
|
virtual |
Get/Set <recycle_state>.
Implements ACE_Connection_Recycling_Strategy.
|
virtual |
Get/Set recycle_state.
Implements ACE_Connection_Recycling_Strategy.
|
protectedvirtual |
Set <recycle_state> (non-locking version).
Reimplemented in ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_1, CACHING_STRATEGY, ATTRIBUTES, MUTEX >, and ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX >.
|
protectedvirtual |
Get <recycle_state> (non-locking version).
Reimplemented in ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_1, CACHING_STRATEGY, ATTRIBUTES, MUTEX >, and ACE_Cached_Connect_Strategy_Ex< SVC_HANDLER, ACE_PEER_CONNECTOR_2, CACHING_STRATEGY, ATTRIBUTES, MUTEX >.
|
virtual |
|
protected |
Concurrency strategy for an <Connector>.
|
protected |
Table that maintains the cache of connected SVC_HANDLERs.
|
protected |
Creation strategy for an <Connector>.
|
protected |
true if <Connector> created the concurrency strategy and thus should delete it, else false.
|
protected |
true if <Connector> created the creation strategy and thus should delete it, else false.
|
protected |
Mutual exclusion for this object.
|
protected |
true if <Connector> created the recycling strategy and thus should delete it, else false.
|
protected |
Mutual exclusion for this object.
|
protected |
Recycling strategy for an <Connector>.
|
protected |
Reverse lock.