#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) |
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. More... | |
void | shutdown (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
Disconnect and shutdown the gateway, no further connectsions. More... | |
void | open (RtecEventChannelAdmin::SupplierQOS &pub ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
Connect to the EC using the given publications lists. More... | |
virtual void | close (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) |
Disconnect to the EC. More... | |
int | handle_input (ACE_SOCK_Dgram &dgram) |
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. More... | |
int | handle_timeout (const ACE_Time_Value &tv, const void *act) |
The timer has expired, must update all the unreceived messages... More... | |
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. More... | |
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. More... | |
RtecEventChannelAdmin::ProxyPushConsumer_var | consumer_proxy_ |
We talk to the EC (as a consumer) using this proxy. More... | |
TAO_ECG_UDP_Out_Endpoint * | ignore_from_ |
Ignore any events coming from this IP addres. More... | |
RtecUDPAdmin::AddrServer_var | addr_server_ |
The server used to map event types into multicast groups. More... | |
Request_Map | request_map_ |
The map containing all the incoming requests which have been partially received. More... | |
TAO_ECG_UDP_TH | timeout_handler_ |
To receive the timeouts.. More... | |
ACE_Reactor * | reactor_ |
The reactor we are using for the timeout handler... More... | |
int | max_timeout_ |
How many timeouts before we expire a message... More... |
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.
|
|
To receive the timeouts..
|