NAME
ACE_Strategy_Connector - Abstract factory for creating a service handler (SVC_HANDLER), connecting the SVC_HANDLER, and activating the SVC_HANDLER.
SYNOPSIS
#include <ace/Connector.h>
template<class SVC_HANDLER, ACE_PEER_CONNECTOR_1>
class ACE_Strategy_Connector :
public ACE_Connector <SVC_HANDLER, ACE_PEER_CONNECTOR_2>
{
public:
ACE_Strategy_Connector (
ACE_Reactor *r = ACE_Reactor::instance (),
ACE_Creation_Strategy<SVC_HANDLER> * = 0,
ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> * = 0,
ACE_Concurrency_Strategy<SVC_HANDLER> * = 0,
int flags = 0
);
virtual int open (ACE_Reactor *r, int flags);
virtual int open (
ACE_Reactor *r = ACE_Reactor::instance (),
ACE_Creation_Strategy<SVC_HANDLER> * = 0,
ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> * = 0,
ACE_Concurrency_Strategy<SVC_HANDLER> * = 0,
int flags = 0
);
virtual ~ACE_Strategy_Connector (void);
virtual int close (void);
typedef ACE_Creation_Strategy<SVC_HANDLER> CREATION_STRATEGY;
typedef ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> CONNECT_STRATEGY;
typedef ACE_Concurrency_Strategy<SVC_HANDLER> CONCURRENCY_STRATEGY;
typedef ACE_Connector <SVC_HANDLER, ACE_PEER_CONNECTOR_2> SUPER;
virtual ACE_Creation_Strategy<SVC_HANDLER> *creation_strategy (
void
) const;
virtual ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> *connect_strategy (
void
) const;
virtual ACE_Concurrency_Strategy<SVC_HANDLER> *concurrency_strategy (
void
) const;
protected:
virtual int make_svc_handler (SVC_HANDLER *&sh);
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,
int 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,
int reuse_addr,
int flags,
int perms
);
virtual int activate_svc_handler (SVC_HANDLER *svc_handler);
CREATION_STRATEGY *creation_strategy_;
int delete_creation_strategy_;
CONNECT_STRATEGY *connect_strategy_;
int delete_connect_strategy_;
CONCURRENCY_STRATEGY *concurrency_strategy_;
int delete_concurrency_strategy_;
};
DESCRIPTION
Implements a flexible and extensible set of strategies for actively establishing connections with clients. There are three main strategies: (1) creating a SVC_HANDLER, (2) actively connecting a new connection from a client into the SVC_HANDLER, and (3) activating the SVC_HANDLER with a particular concurrency mechanism.
Define some useful typedefs traits.
typedef ACE_Creation_Strategy<SVC_HANDLER> CREATION_STRATEGY;
typedef ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> CONNECT_STRATEGY;
typedef ACE_Concurrency_Strategy<SVC_HANDLER> CONCURRENCY_STRATEGY;
typedef ACE_Connector <SVC_HANDLER, ACE_PEER_CONNECTOR_2> SUPER;
Strategies accessors
virtual ACE_Creation_Strategy<SVC_HANDLER> *creation_strategy (
void
) const;
virtual ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> *connect_strategy (
void
) const;
virtual ACE_Concurrency_Strategy<SVC_HANDLER> *concurrency_strategy (
void
) const;
Strategy objects.
CREATION_STRATEGY *creation_strategy_;
Creation strategy for an Connector.
int delete_creation_strategy_;
1 if Connector created the creation strategy and thus should delete it, else 0.
CONNECT_STRATEGY *connect_strategy_;
Connect strategy for a Connector.
int delete_connect_strategy_;
1 if Connector created the connect strategy and thus should delete it, else 0.
CONCURRENCY_STRATEGY *concurrency_strategy_;
Concurrency strategy for an Connector.
int delete_concurrency_strategy_;
1 if Connector created the concurrency strategy and thus should delete it, else 0.
AUTHOR
Doug Schmidt
LIBRARY
ace