diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/IOR_Multicast.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IOR_Multicast.cpp | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/TAO/orbsvcs/orbsvcs/IOR_Multicast.cpp b/TAO/orbsvcs/orbsvcs/IOR_Multicast.cpp deleted file mode 100644 index bc4eb5c9a1f..00000000000 --- a/TAO/orbsvcs/orbsvcs/IOR_Multicast.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// $Id$ - -#include "IOR_Multicast.h" - -ACE_RCSID(orbsvcs, IOR_Multicast, "$Id$") - -ACE_HANDLE -TAO_IOR_Multicast::get_handle (void) const -{ - return this->mcast_dgram_.get_handle (); -} - -TAO_IOR_Multicast::TAO_IOR_Multicast (void) - : service_id_ ((TAO_Service_ID) 0), - ior_ (0) -{ -} - -TAO_IOR_Multicast::TAO_IOR_Multicast (const char *ior, - u_short port, - const char *mcast_addr, - TAO_Service_ID service_id) -{ - if (this->init (ior, - port, - mcast_addr, - service_id) == -1) - ACE_ERROR ((LM_ERROR, - ASYS_TEXT ("%p\n"), - ASYS_TEXT ("TAO_IOR_Multicast"))); -} - -// destructor - -TAO_IOR_Multicast::~TAO_IOR_Multicast (void) -{ - this->mcast_dgram_.unsubscribe (); -} - -int -TAO_IOR_Multicast::init (const char *ior, - u_short port, - const char *mcast_addr, - TAO_Service_ID service_id) -{ - this->service_id_ = service_id; - this->mcast_addr_.set (port, mcast_addr); - this->ior_ = ior; - this->response_addr_.set ((u_short) 0); - this->response_.open (this->response_addr_); - - // Use ACE_SOCK_Dgram_Mcast factory to subscribe to multicast group. - if (this->mcast_dgram_.subscribe (this->mcast_addr_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "subscribe"), - -1); - return 0; -} - -int -TAO_IOR_Multicast::handle_timeout (const ACE_Time_Value &, - const void *) -{ - return 0; -} - -int -TAO_IOR_Multicast::handle_input (ACE_HANDLE) -{ - // mcast_info[0] == port. - // mcast_info[1] == service id. - ACE_UINT16 mcast_info[2]; - - ACE_INET_Addr remote_addr; - - ssize_t result = - // This call fills in the address of the sender. - this->mcast_dgram_.recv (mcast_info, - sizeof (mcast_info), - remote_addr); - - if (result == -1) - return -1; - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - "(%P|%t) Received multicast.\n")); - - // Validate data string received is from a valid client here. - - if (result != sizeof (mcast_info)) - ACE_ERROR_RETURN ((LM_ERROR, - "Reply to multicast not sent. Received %d bytes, expected %d.", - result, - sizeof (mcast_info)), - -1); - - // Confirm that we were meant to respond to this request. - mcast_info[1] = ACE_NTOHS (mcast_info[1]); - - if (mcast_info[1] == this->service_id_) - { - remote_addr.set_port_number (mcast_info[0], 0); - - // Send the object reference for the naming service - - result = response_.send (this->ior_, - ACE_OS::strlen (this->ior_), - remote_addr, - 0); - - if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, - "(%P|%t) ior_: <%s>\n" - " sent through port %u to host %s.\n" - "result = %d\n", - this->ior_, - remote_addr.get_port_number (), - remote_addr.get_host_name (), - result)); - - // Deregister the handler from the reactor only if something - // really bad happens, like EBADF. We should possibly - // discriminate certain other errors or even reverse it: i.e., - // keep the handler only after certain errors. @@Vishal, please - // take a look at this. - - if (result == -1) - { - if (errno == EBADF) - ACE_ERROR_RETURN ((LM_ERROR, - "(%P|%t) Error sending multicast: errno %d.\n", errno), - -1); - else - ACE_ERROR_RETURN ((LM_ERROR, - "(%P|%t) Error sending reply to a multicast: errno %d.\n", - errno), - 0); - } - } - else - ACE_DEBUG ((LM_DEBUG, - "(%P|%t) Multicast was not for us.")); - - return 0; -} |