diff options
author | yamuna <yamuna@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-10-15 23:17:13 +0000 |
---|---|---|
committer | yamuna <yamuna@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-10-15 23:17:13 +0000 |
commit | 8fef6ae71825c620b407d78bd4860af966d6d8a2 (patch) | |
tree | 017be36dd5374aa38a86f30f1949f422c3a43a5c | |
parent | 3040e13d177f42c451bac24935206b241d16409e (diff) | |
download | ATCD-8fef6ae71825c620b407d78bd4860af966d6d8a2.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.cpp | 152 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.h | 4 |
2 files changed, 123 insertions, 33 deletions
diff --git a/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.cpp b/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.cpp index a1053017e8f..a9515ab87b5 100644 --- a/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.cpp +++ b/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.cpp @@ -58,7 +58,7 @@ TAO_AV_SCTP_SEQ_Transport::send (const ACE_Message_Block *mblk, ACE_Time_Value * // For the most part this was copied from GIOP::send_request and // friends. - ACE_Time_Value timeout (5); + // ACE_Time_Value timeout; iovec iov[ACE_IOV_MAX]; int iovcnt = 0; @@ -85,8 +85,8 @@ TAO_AV_SCTP_SEQ_Transport::send (const ACE_Message_Block *mblk, ACE_Time_Value * if (iovcnt == ACE_IOV_MAX) { n = this->handler_->peer ().sendv_n ((const iovec *) iov, - iovcnt, - &timeout); + iovcnt); + //&timeout); if (n < 1) return n; @@ -112,18 +112,18 @@ TAO_AV_SCTP_SEQ_Transport::send (const ACE_Message_Block *mblk, ACE_Time_Value * ssize_t TAO_AV_SCTP_SEQ_Transport::send (const char *buf, - size_t len, - ACE_Time_Value *) + size_t len, + ACE_Time_Value *) { return this->handler_->peer ().send_n (buf, len); } ssize_t TAO_AV_SCTP_SEQ_Transport::send (const iovec *iov, - int iovcnt, - ACE_Time_Value *) + int iovcnt, + ACE_Time_Value *) { - return this->handler_->peer ().sendv_n ((const iovec *) iov, + return this->handler_->peer ().sendv_n (iov, iovcnt); } @@ -208,7 +208,10 @@ TAO_AV_SCTP_SEQ_Base_Acceptor::acceptor_open (TAO_AV_SCTP_SEQ_Acceptor *acceptor ACE_DEBUG ((LM_DEBUG, "%s\n", addrs [i])); - ip_addr.set (addrs [i]); + + ACE_CString addr_str (addrs[i]); + addr_str += ":"; + ip_addr.set (addr_str.c_str ()); local_ip_addr [i] = ip_addr.get_ip_address (); } @@ -218,22 +221,40 @@ TAO_AV_SCTP_SEQ_Base_Acceptor::acceptor_open (TAO_AV_SCTP_SEQ_Acceptor *acceptor local_addr.get_host_name ())); ACE_Multihomed_INET_Addr multi_addr; -// multi_addr.set (local_addr.get_port_number (), -// local_addr.get_host_addr (), -// 1, -// AF_INET, -// (const char**) entry->get_local_sec_addr (), -// entry->num_local_sec_addrs ()); + // multi_addr.set (local_addr.get_port_number (), + // local_addr.get_host_addr (), + // 1, + // AF_INET, + // (const char**) entry->get_local_sec_addr (), + // entry->num_local_sec_addrs ()); multi_addr.set (local_addr.get_port_number (), local_addr.get_ip_address (), 1, local_ip_addr, entry->num_local_sec_addrs ()); + + size_t size = 5; + ACE_INET_Addr* peer_addrs; + ACE_NEW_RETURN (peer_addrs, ACE_INET_Addr[size], -1); + multi_addr.get_secondary_addresses (peer_addrs, size); + char buf[BUFSIZ]; + for (unsigned int i=0; i < size;i++) + { + peer_addrs [i].addr_to_string (buf, + BUFSIZ); + ACE_DEBUG ((LM_DEBUG, + "Local Secondary Addresses %s %d\n", + buf, + size)); + } + int result = this->open (multi_addr,reactor); if (result < 0) ACE_ERROR_RETURN ((LM_ERROR,"TAO_AV_SCTP_SEQ_Base_Acceptor::open failed\n"),-1); + + return 0; } @@ -245,6 +266,8 @@ TAO_AV_SCTP_SEQ_Base_Acceptor::make_svc_handler (TAO_AV_SCTP_SEQ_Flow_Handler *& return result; handler->reactor (this->reactor_); this->entry_->handler (handler); + + return 0; } @@ -291,10 +314,10 @@ TAO_AV_SCTP_SEQ_Acceptor::make_svc_handler (TAO_AV_SCTP_SEQ_Flow_Handler *&sctp_ int TAO_AV_SCTP_SEQ_Acceptor::open (TAO_Base_StreamEndPoint *endpoint, - TAO_AV_Core *av_core, - TAO_FlowSpec_Entry *entry, - TAO_AV_Flow_Protocol_Factory *factory, - TAO_AV_Core::Flow_Component flow_comp) + TAO_AV_Core *av_core, + TAO_FlowSpec_Entry *entry, + TAO_AV_Flow_Protocol_Factory *factory, + TAO_AV_Core::Flow_Component flow_comp) { this->flow_protocol_factory_ = factory; @@ -329,7 +352,6 @@ TAO_AV_SCTP_SEQ_Acceptor::open (TAO_Base_StreamEndPoint *endpoint, //Add code for reading multihomed addresses and pass the multihomed //addr to the following method. ACE_Multihomed_addr derives from //ACE_INET_Addr, hence this should not be an issue. - int result = this->acceptor_.acceptor_open (this, av_core->reactor (), *inet_addr, @@ -340,6 +362,8 @@ TAO_AV_SCTP_SEQ_Acceptor::open (TAO_Base_StreamEndPoint *endpoint, -1); entry->set_local_addr (address); + + return 0; } @@ -430,10 +454,9 @@ TAO_AV_SCTP_SEQ_Base_Connector::make_svc_handler (TAO_AV_SCTP_SEQ_Flow_Handler * int TAO_AV_SCTP_SEQ_Base_Connector::connector_connect (TAO_AV_SCTP_SEQ_Flow_Handler *&handler, - const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr) + const ACE_Multihomed_INET_Addr &remote_addr, + const ACE_Multihomed_INET_Addr &local_addr) { - int result = this->connect (handler, remote_addr, 0, @@ -517,7 +540,12 @@ TAO_AV_SCTP_SEQ_Connector::connect (TAO_FlowSpec_Entry *entry, char** addrs = entry->get_local_sec_addr (); for (int i = 0; i < entry->num_local_sec_addrs (); i++) { - ip_addr.set (addrs[i]); + ACE_DEBUG ((LM_DEBUG, + "In the for loop remote %s \n", + addrs[i])); + ACE_CString addr_str (addrs[i]); + addr_str += ":"; + ip_addr.set (addr_str.c_str ()); remote_ip_addr [i] = ip_addr.get_ip_address (); } @@ -548,7 +576,9 @@ TAO_AV_SCTP_SEQ_Connector::connect (TAO_FlowSpec_Entry *entry, char** addrs = entry->get_peer_sec_addr (); for (int i = 0; i < entry->num_peer_sec_addrs (); i++) { - ip_addr.set (addrs[i]); + ACE_CString addr_str (addrs[i]); + addr_str += ":"; + ip_addr.set (addr_str.c_str ()); local_ip_addr [i] = ip_addr.get_ip_address (); } @@ -558,15 +588,35 @@ TAO_AV_SCTP_SEQ_Connector::connect (TAO_FlowSpec_Entry *entry, 1, local_ip_addr, entry->num_peer_sec_addrs ()); - ACE_DEBUG ((LM_DEBUG, - "Local Sec Addrs\n")); - for (int i = 0; i < entry->num_peer_sec_addrs (); i++) - ACE_DEBUG ((LM_DEBUG, - "%s\n", - (entry->get_peer_sec_addr ())[i])); } + size_t size = 5; + ACE_INET_Addr* peer_addrs; + ACE_NEW_RETURN (peer_addrs, ACE_INET_Addr[size], -1); + remote_multi_addr.get_secondary_addresses (peer_addrs, size); + char buf[BUFSIZ]; + for (unsigned int i=0; i < size;i++) + { + peer_addrs [i].addr_to_string (buf, + BUFSIZ); + ACE_DEBUG ((LM_DEBUG, + "Remote Secondary Address %s %d\n", + buf, + size)); + } + + local_addr.get_secondary_addresses (peer_addrs, size); + for (unsigned int i=0; i < size;i++) + { + peer_addrs [i].addr_to_string (buf, + BUFSIZ); + ACE_DEBUG ((LM_DEBUG, + "Local Secondary Address %s %d\n", + buf, + size)); + } + int result = this->connector_.connector_connect (handler, remote_multi_addr, local_addr); @@ -574,6 +624,29 @@ TAO_AV_SCTP_SEQ_Connector::connect (TAO_FlowSpec_Entry *entry, ACE_ERROR_RETURN ((LM_ERROR,"TAO_AV_SCTP_SEQ_connector::connect failed\n"),-1); entry->handler (handler); transport = handler->transport (); + + handler->peer ().get_local_addrs (peer_addrs, size); + for (unsigned int i=0; i < size;i++) + { + peer_addrs [i].addr_to_string (buf, + BUFSIZ); + ACE_DEBUG ((LM_DEBUG, + "%s %d\n", + buf, + size)); + } + size = 3; + handler->peer ().get_remote_addrs (peer_addrs, size); + for (unsigned int i=0; i < size;i++) + { + peer_addrs [i].addr_to_string (buf, + BUFSIZ); + ACE_DEBUG ((LM_DEBUG, + "%s %d\n", + buf, + size)); + } + return 0; } @@ -762,6 +835,23 @@ TAO_AV_SCTP_SEQ_Flow_Handler::open (void * /*arg*/) ACE_TEXT ("%p\n"), ACE_TEXT ("unable to register client handler")), -1); + + size_t size = 5; + ACE_INET_Addr* peer_addrs; + ACE_NEW_RETURN (peer_addrs, ACE_INET_Addr[size], -1); + + char buf [BUFSIZ]; + this->peer ().get_local_addrs (peer_addrs, size); + for (unsigned int i=0; i < size;i++) + { + peer_addrs [i].addr_to_string (buf, + BUFSIZ); + ACE_DEBUG ((LM_DEBUG, + "%s %d\n", + buf, + size)); + } + return 0; } diff --git a/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.h b/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.h index c435d75b455..4cd811b3692 100644 --- a/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.h +++ b/TAO/orbsvcs/orbsvcs/AV/SCTP_SEQ.h @@ -203,8 +203,8 @@ public: int connector_open (TAO_AV_SCTP_SEQ_Connector *connector, ACE_Reactor *reactor); int connector_connect (TAO_AV_SCTP_SEQ_Flow_Handler *&handler, - const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr); + const ACE_Multihomed_INET_Addr &remote_addr, + const ACE_Multihomed_INET_Addr &local_addr); virtual int make_svc_handler (TAO_AV_SCTP_SEQ_Flow_Handler *& handler); protected: TAO_AV_SCTP_SEQ_Connector *connector_; |