#include <EC_Gateway_UDP.h>
Collaboration diagram for TAO_ECG_UDP_Receiver:

Public Methods | |
| TAO_ECG_UDP_Receiver (void) | |
| void | init (RtecEventChannelAdmin::EventChannel_ptr lcl_ec, TAO_ECG_UDP_Out_Endpoint *ignore_from, RtecUDPAdmin::AddrServer_ptr addr_server, ACE_Reactor *reactor, const ACE_Time_Value &expire_interval, int max_timeout ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
| void | shutdown (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
| Disconnect and shutdown the gateway, no further connectsions. | |
| void | open (RtecEventChannelAdmin::SupplierQOS &pub ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
| Connect to the EC using the given publications lists. | |
| virtual void | close (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
| Disconnect to the EC. | |
| int | handle_input (ACE_SOCK_Dgram &dgram) |
| int | handle_timeout (const ACE_Time_Value &tv, const void *act) |
| virtual void | disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) throw (CORBA::SystemException) |
| void | get_addr (const RtecEventComm::EventHeader &header, RtecUDPAdmin::UDP_Addr_out addr ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
| Call the RtecUDPAdmin::AddrServer. | |
Private Types | |
| typedef ACE_Hash_Map_Manager< TAO_ECG_UDP_Request_Index, TAO_ECG_UDP_Request_Entry *, TAO_SYNCH_MUTEX > | Request_Map |
| typedef ACE_Hash_Map_Entry< TAO_ECG_UDP_Request_Index, TAO_ECG_UDP_Request_Entry * > | Request_Map_Entry |
Private Attributes | |
| RtecEventChannelAdmin::EventChannel_var | lcl_ec_ |
| The remote and the local EC, so we can reconnect when the list changes. | |
| RtecEventChannelAdmin::ProxyPushConsumer_var | consumer_proxy_ |
| We talk to the EC (as a consumer) using this proxy. | |
| TAO_ECG_UDP_Out_Endpoint * | ignore_from_ |
| Ignore any events coming from this IP addres. | |
| RtecUDPAdmin::AddrServer_var | addr_server_ |
| The server used to map event types into multicast groups. | |
| Request_Map | request_map_ |
| TAO_SYNCH_MUTEX | request_map_protector_ |
| Mutex for the map. | |
| TAO_ECG_UDP_TH | timeout_handler_ |
| To receive the timeouts.. | |
| ACE_Reactor * | reactor_ |
| The reactor we are using for the timeout handler... | |
| int | max_timeout_ |
| How many timeouts before we expire a message... | |
This supplier receives events from an ACE_SOCK_Dgram, either from a UDP socket or a Mcast group, decodes them and push them to the EC. = REASSEMBLY Whenever an incomplete fragment is received (one with fragment_count > 1) we allocate an entry for the message in an map indexed by (host,port,request_id). The entry contains the buffer, a bit vector to keep track of the fragments received so far, and a timeout counter. This timeout counter is set to 0 on each (new) fragment arrival, and incremented on a regular basis. If the counter reaches a maximum value the message is dropped. Once all the fragments have been received the message is sent up, and the memory reclaimed. The entry is *not* removed until the timer expires (to handle re-transmitions).
|
|
|
|
|
|
|
|
|
|
|
Disconnect to the EC.
|
|
|
|
|
||||||||||||
|
Call the RtecUDPAdmin::AddrServer.
|
|
|
The Event_Handlers call this method when data is available at the socket, the <dgram> must be ready for reading and contain a full event. |
|
||||||||||||
|
The timer has expired, must update all the unreceived messages... |
|
||||||||||||||||||||||||||||
|
To do its job this class requires to know the local EC it will connect to; it also requires to build an RT_Info for the local scheduler. The <reactor> is used to receive timeout events.. The <ignore_from> endpoint is used to remove events generated by the same process.
|
|
|
Connect to the EC using the given publications lists.
|
|
|
Disconnect and shutdown the gateway, no further connectsions.
|
|
|
The server used to map event types into multicast groups.
|
|
|
We talk to the EC (as a consumer) using this proxy.
|
|
|
Ignore any events coming from this IP addres.
|
|
|
The remote and the local EC, so we can reconnect when the list changes.
|
|
|
How many timeouts before we expire a message...
|
|
|
The reactor we are using for the timeout handler...
|
|
|
The map containing all the incoming requests which have been partially received. |
|
|
Mutex for the map.
|
|
|
To receive the timeouts..
|
1.2.18