|
Public Methods |
| TAO_EC_Gateway_IIOP (void) |
virtual | ~TAO_EC_Gateway_IIOP (void) |
int | init (RtecEventChannelAdmin::EventChannel_ptr supplier_ec, RtecEventChannelAdmin::EventChannel_ptr consumer_ec ACE_ENV_ARG_DECL) |
void | disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
| The channel is disconnecting.
|
void | disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
| The channel is disconnecting.
|
void | push (const RtecEventComm::EventSet &events ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
int | shutdown (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
| Disconnect and shutdown the gateway.
|
virtual void | close (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
virtual void | update_consumer (const RtecEventChannelAdmin::ConsumerQOS &sub ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException) |
virtual void | update_supplier (const RtecEventChannelAdmin::SupplierQOS &pub ACE_ENV_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException) |
void | reconnect_consumer_ec (ACE_ENV_SINGLE_ARG_DECL) |
CORBA::Boolean | consumer_ec_non_existent (CORBA::Boolean_out disconnected ACE_ENV_ARG_DECL) |
| Check whether the consumer event channel is non existent or not.
|
void | cleanup_consumer_proxies (ACE_ENV_SINGLE_ARG_DECL) |
int | cleanup_consumer_ec (void) |
int | cleanup_supplier_ec (void) |
void | suspend_supplier_ec (ACE_ENV_SINGLE_ARG_DECL) |
| Suspend the connection to the supplier ec.
|
void | resume_supplier_ec (ACE_ENV_SINGLE_ARG_DECL) |
| Resume the connection to the supplier ec.
|
Protected Types |
typedef ACE_Map_Manager< RtecEventComm::EventSourceID,
RtecEventChannelAdmin::ProxyPushConsumer_ptr,
ACE_Null_Mutex > | Consumer_Map |
typedef ACE_Map_Iterator<
RtecEventComm::EventSourceID,
RtecEventChannelAdmin::ProxyPushConsumer_ptr,
ACE_Null_Mutex > | Consumer_Map_Iterator |
Protected Methods |
int | init_i (RtecEventChannelAdmin::EventChannel_ptr supplier_ec, RtecEventChannelAdmin::EventChannel_ptr consumer_ec ACE_ENV_ARG_DECL) |
| Do the real work in init().
|
Protected Attributes |
TAO_SYNCH_MUTEX | lock_ |
| Lock to synchronize internal changes.
|
CORBA::ULong | busy_count_ |
int | update_posted_ |
RtecEventChannelAdmin::ConsumerQOS | c_qos_ |
int | cleanup_posted_ |
int | supplier_ec_suspended_ |
RtecEventChannelAdmin::EventChannel_var | supplier_ec_ |
RtecEventChannelAdmin::EventChannel_var | consumer_ec_ |
| The event channel acting as consumer of this gateway.
|
RtecBase::handle_t | supplier_info_ |
| Our RT_Infos for the event channel that is the supplier.
|
RtecBase::handle_t | consumer_info_ |
| Our RT_Infos for the event channel that is the consumer.
|
ACE_PushConsumer_Adapter<
TAO_EC_Gateway_IIOP > | consumer_ |
| Our consumer personality....
|
int | consumer_is_active_ |
| If it is not 0 then we must deactivate the consumer.
|
ACE_PushSupplier_Adapter<
TAO_EC_Gateway_IIOP > | supplier_ |
| Our supplier personality....
|
int | supplier_is_active_ |
| If it is not 0 then we must deactivate the supplier.
|
Consumer_Map | consumer_proxy_map_ |
RtecEventChannelAdmin::ProxyPushConsumer_var | default_consumer_proxy_ |
RtecEventChannelAdmin::ProxyPushSupplier_var | supplier_proxy_ |
TAO_ECG_ConsumerEC_Control * | ec_control_ |
TAO_EC_Gateway_IIOP_Factory * | factory_ |
| The Gateway IIOP Factory for all the settings.
|
int | use_ttl_ |
| If 1, we use the TTL flags, if 0, we just ignore TTL.
|
int | use_consumer_proxy_map_ |
Private Methods |
void | close_i (ACE_ENV_SINGLE_ARG_DECL) |
void | disconnect_supplier_proxy_i (ACE_ENV_SINGLE_ARG_DECL) |
| Disconnect the supplier proxy.
|
void | disconnect_consumer_proxies_i (ACE_ENV_SINGLE_ARG_DECL) |
| Disconnect all consumer proxies.
|
void | cleanup_consumer_proxies_i (ACE_ENV_SINGLE_ARG_DECL) |
| Remove all consumer proxies without calling disconnect on them.
|
void | update_consumer_i (const RtecEventChannelAdmin::ConsumerQOS &sub ACE_ENV_ARG_DECL) |
void | open_i (const RtecEventChannelAdmin::ConsumerQOS &sub ACE_ENV_ARG_DECL) |
| Create all connections to consumer ec and to supplier ec.
|
CORBA::Boolean | is_consumer_ec_connected_i (void) const |
| Helper method to see if consumer ec is connected.
|
void | push_to_consumer (RtecEventChannelAdmin::ProxyPushConsumer_ptr consumer, const RtecEventComm::EventSet &event ACE_ENV_ARG_DECL) |
| Push the event to the consumer.
|
void | cleanup_consumer_ec_i (void) |
void | cleanup_supplier_ec_i (void) |
This class mediates among two event channels, it connects as a consumer of events with a remote event channel, and as a supplier of events with the local EC. As a consumer it gives a QoS designed to only accept the events in which *local* consumers are interested. Eventually the local EC should create this object and compute its QoS in an automated manner; but this requires some way to filter out the peers registered as consumers, otherwise we will get loops in the QoS graph. It uses exactly the same set of events in the publications list when connected as a supplier.