Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ACE_RMCast_IO_UDP Class Reference

#include <RMCast_IO_UDP.h>

Inheritance diagram for ACE_RMCast_IO_UDP:

Inheritance graph
[legend]
Collaboration diagram for ACE_RMCast_IO_UDP:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_RMCast_IO_UDP (ACE_RMCast_Module_Factory *factory)
 Constructor.

 ~ACE_RMCast_IO_UDP (void)
 Destructor.

int init (const ACE_INET_Addr &mcast_group, const ACE_Addr &local, int protocol_family=PF_INET, int protocol=0, int reuse_addr=0)
 Open the internal socket, but only to send multicast data.

int subscribe (const ACE_INET_Addr &mcast_addr, int reuse_addr=1, const ACE_TCHAR *net_if=0, int protocol_family=PF_INET, int protocol=0)
 Join a new multicast group.

int handle_events (ACE_Time_Value *tv=0)
int handle_input (ACE_HANDLE h)
 There is data to read, read it and process it.

ACE_HANDLE get_handle (void) const
 Obtain the handle for the underlying socket.

virtual int data (ACE_RMCast::Data &)
 Push data through the stack.

virtual int poll (ACE_RMCast::Poll &)
 Push a polling request through the stack.

virtual int ack_join (ACE_RMCast::Ack_Join &)
 Push a message to ack a join request through the stack.

virtual int ack_leave (ACE_RMCast::Ack_Leave &)
 Push a message to ack a leave request through the stack.

virtual int ack (ACE_RMCast::Ack &)
 Push an ack mesage through the stack.

virtual int join (ACE_RMCast::Join &)
 Push a join message through the stack.

virtual int leave (ACE_RMCast::Leave &)
 Push a leave message through the stack.

int send_data (ACE_RMCast::Data &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.

int send_poll (ACE_RMCast::Poll &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.

int send_ack_join (ACE_RMCast::Ack_Join &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.

int send_ack_leave (ACE_RMCast::Ack_Leave &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.

int send_ack (ACE_RMCast::Ack &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.

int send_join (ACE_RMCast::Join &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.

int send_leave (ACE_RMCast::Leave &, const ACE_INET_Addr &)
 Send the message to the ACE_INET_Addr argument.


Private Types

typedef ACE_Hash_Map_Manager<
ACE_INET_Addr, ACE_RMCast_UDP_Proxy *,
ACE_Null_Mutex
Map
 Use a Hash_Map to maintain the collection of proxies.


Private Methods

ACE_RMCast_UDP_Proxyallocate_and_bind_proxy (ACE_RMCast_Module *module, const ACE_INET_Addr &)

Private Attributes

ACE_RMCast_Module_Factoryfactory_
 The factory used to create the modules attached to each proxy.

ACE_INET_Addr mcast_group_
 The multicast group we subscribe and send to.

ACE_SOCK_Dgram_Mcast dgram_
 The socket used to receive and send data.

Map map_
 The collection of proxies.


Member Typedef Documentation

typedef ACE_Hash_Map_Manager<ACE_INET_Addr,ACE_RMCast_UDP_Proxy*,ACE_Null_Mutex> ACE_RMCast_IO_UDP::Map [private]
 

Use a Hash_Map to maintain the collection of proxies.


Constructor & Destructor Documentation

ACE_INLINE ACE_RMCast_IO_UDP::ACE_RMCast_IO_UDP ACE_RMCast_Module_Factory   factory
 

Constructor.

The <factory> argument is used to create the modules for each proxy that process incoming messages. The class does *not* assume ownership of <factory>, the caller owns it. But it does assume ownership of the modules returned by the factory, and it may ask the factory to release them eventually.

ACE_RMCast_IO_UDP::~ACE_RMCast_IO_UDP void   
 

Destructor.


Member Function Documentation

int ACE_RMCast_IO_UDP::ack ACE_RMCast::Ack   [virtual]
 

Push an ack mesage through the stack.

Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_IO_UDP::ack_join ACE_RMCast::Ack_Join   [virtual]
 

Push a message to ack a join request through the stack.

Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_IO_UDP::ack_leave ACE_RMCast::Ack_Leave   [virtual]
 

Push a message to ack a leave request through the stack.

Reimplemented from ACE_RMCast_Module.

ACE_INLINE ACE_RMCast_UDP_Proxy * ACE_RMCast_IO_UDP::allocate_and_bind_proxy ACE_RMCast_Module   module,
const ACE_INET_Addr  
[private]
 

int ACE_RMCast_IO_UDP::data ACE_RMCast::Data   [virtual]
 

Push data through the stack.

Reimplemented from ACE_RMCast_Module.

ACE_HANDLE ACE_RMCast_IO_UDP::get_handle void    const
 

Obtain the handle for the underlying socket.

int ACE_RMCast_IO_UDP::handle_events ACE_Time_Value   tv = 0
 

Wait for events for the period <tv>. If <tv> is zero it blocks forever.

int ACE_RMCast_IO_UDP::handle_input ACE_HANDLE    h
 

There is data to read, read it and process it.

int ACE_RMCast_IO_UDP::init const ACE_INET_Addr   mcast_group,
const ACE_Addr   local,
int    protocol_family = PF_INET,
int    protocol = 0,
int    reuse_addr = 0
 

Open the internal socket, but only to send multicast data.

It is not clear to me if this is a valid configuration. Maybe it would be a problem to expose two separate, incompatible interfaces (check the subscribe() method). However, the alternative would be to implement almost identical class for outgoing and incoming UDP I/O

int ACE_RMCast_IO_UDP::join ACE_RMCast::Join   [virtual]
 

Push a join message through the stack.

Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_IO_UDP::leave ACE_RMCast::Leave   [virtual]
 

Push a leave message through the stack.

Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_IO_UDP::poll ACE_RMCast::Poll   [virtual]
 

Push a polling request through the stack.

Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_IO_UDP::send_ack ACE_RMCast::Ack  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::send_ack_join ACE_RMCast::Ack_Join  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::send_ack_leave ACE_RMCast::Ack_Leave  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::send_data ACE_RMCast::Data  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::send_join ACE_RMCast::Join  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::send_leave ACE_RMCast::Leave  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::send_poll ACE_RMCast::Poll  ,
const ACE_INET_Addr  
 

Send the message to the ACE_INET_Addr argument.

These methods are used in the implementation of the ACE_RMCast_UDP_Proxy objects and the implementation of the inherited ACE_RMCast_Module methods in this class.

int ACE_RMCast_IO_UDP::subscribe const ACE_INET_Addr   mcast_addr,
int    reuse_addr = 1,
const ACE_TCHAR   net_if = 0,
int    protocol_family = PF_INET,
int    protocol = 0
 

Join a new multicast group.

Start receiving data for the <mcast_addr> multicast group. Please read the documentation of ACE_SOCK_Dgram_Mcast for more details.


Member Data Documentation

ACE_SOCK_Dgram_Mcast ACE_RMCast_IO_UDP::dgram_ [private]
 

The socket used to receive and send data.

ACE_RMCast_Module_Factory* ACE_RMCast_IO_UDP::factory_ [private]
 

The factory used to create the modules attached to each proxy.

Map ACE_RMCast_IO_UDP::map_ [private]
 

The collection of proxies.

ACE_INET_Addr ACE_RMCast_IO_UDP::mcast_group_ [private]
 

The multicast group we subscribe and send to.


The documentation for this class was generated from the following files:
Generated on Fri Apr 2 17:04:49 2004 for ACE_RMCast by doxygen1.2.18