#include <EC_Gateway_UDP.h>
Inheritance 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, CORBA::Environment &env = TAO_default_environment ()) |
void | shutdown (CORBA::Environment & = TAO_default_environment ()) |
Disconnect and shutdown the gateway, no further connectsions. | |
void | open (RtecEventChannelAdmin::SupplierQOS& pub, CORBA::Environment &env = TAO_default_environment ()) |
Connect to the EC using the given publications lists. | |
virtual void | close (CORBA::Environment &env = TAO_default_environment ()) |
Disconnect to the EC. | |
int | handle_input (ACE_SOCK_Dgram& dgram) |
int | handle_timeout (const ACE_Time_Value& tv, const void* act) |
The timer has expired, must update all the unreceived messages... | |
virtual void | disconnect_push_supplier (CORBA::Environment & = TAO_default_environment ()) throw (CORBA::SystemException) |
void | get_addr (const RtecEventComm::EventHeader& header, RtecUDPAdmin::UDP_Addr_out addr, CORBA::Environment &env = TAO_default_environment ()) |
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_ |
The map containing all the incoming requests which have been partially received. | |
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.
|
|
To receive the timeouts..
|