summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordwcraig <dwcraig@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-09 20:41:18 +0000
committerdwcraig <dwcraig@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-11-09 20:41:18 +0000
commit1382cb3afa9d44bb528b79cd43d4eec93d3c660f (patch)
tree5edec508dff37aefd3a0de72a42b77a87ca1eb7d
parent2058d8390f67ce2f8ef0598428ea477455056c2d (diff)
downloadATCD-1382cb3afa9d44bb528b79cd43d4eec93d3c660f.tar.gz
Add wchar support to ACE_Multihomed_INET_Addr
-rw-r--r--ChangeLog14
-rw-r--r--ace/Multihomed_INET_Addr.cpp66
-rw-r--r--ace/Multihomed_INET_Addr.h19
-rw-r--r--tests/SOCK_SEQPACK_SCTP_Test.cpp15
4 files changed, 113 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8576cee3a55..2a19b7f464a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Tue Nov 9 11:53:39 PST 2004 Dave Craig <dwc@qualcomm.com>
+
+ * ace/Multihomed_INET_Addr.cpp:
+ * ace/Multihomed_INET_Addr.h:
+ * tests/SOCK_SEQPACK_SCTP_Test.cpp:
+ Add WCHAR support to ACE_Multihomed_INET_Addr, so
+ SOCK_SEQPACK_SCTP_Test will not fail to build when passing a wchar_t
+ argument on platforms that define ACE_USES_WCHAR.
+
+ Add Qualcomm disclaimer to SOCK_SEQPACK_SCTP_Test.
+
+ Note, there's still one more check-in to make SOCK_SEQPACK_SCTP_Test
+ a shell of a executable on platforms that do not define ACE_HAS_SCTP.
+
Tue Nov 9 09:39:09 2004 Chad Elliott <elliott_c@ociweb.com>
* bin/tao_other_tests.lst:
diff --git a/ace/Multihomed_INET_Addr.cpp b/ace/Multihomed_INET_Addr.cpp
index b9258687a99..0b4a56dac10 100644
--- a/ace/Multihomed_INET_Addr.cpp
+++ b/ace/Multihomed_INET_Addr.cpp
@@ -58,6 +58,43 @@ ACE_Multihomed_INET_Addr::ACE_Multihomed_INET_Addr(u_short port_number,
return;
}
+#if defined (ACE_HAS_WCHAR)
+ACE_Multihomed_INET_Addr::ACE_Multihomed_INET_Addr(u_short port_number,
+ const wchar_t host_name[],
+ int encode,
+ int address_family,
+ const wchar_t *(secondary_host_names[]),
+ size_t size){
+
+ // Initialize the primary INET addr
+ ACE_INET_Addr::set(port_number, host_name, encode, address_family);
+
+ // check for secondary INET addrs
+ if (secondary_host_names && size){
+ // we have a non-zero pointer and size
+ this->secondaries_.size(size); // size the array
+
+ size_t next_empty_slot = 0;
+ for (size_t i = 0; i < size; ++i) {
+ int ret = this->secondaries_[next_empty_slot].set(port_number,
+ secondary_host_names[i],
+ encode,
+ address_family);
+ if (ret) {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Invalid INET addr (%s:%u) will be ignored\n"),
+ ACE_TEXT_WCHAR_TO_TCHAR (secondary_host_names[i]), port_number));
+ this->secondaries_.size(this->secondaries_.size() - 1);
+ }
+ else
+ ++next_empty_slot;
+ }
+ }
+
+ return;
+}
+#endif /* ACE_HAS_WCHAR */
+
ACE_Multihomed_INET_Addr::ACE_Multihomed_INET_Addr(u_short port_number,
ACE_UINT32 primary_ip_addr,
int encode,
@@ -117,6 +154,35 @@ ACE_Multihomed_INET_Addr::set (u_short port_number,
return ACE_INET_Addr::set(port_number, host_name, encode, address_family);
}
+#if defined (ACE_HAS_WCHAR)
+//
+// WCHAR version of ::set
+//
+int
+ACE_Multihomed_INET_Addr::set (u_short port_number,
+ const wchar_t host_name[],
+ int encode,
+ int address_family,
+ const wchar_t *(secondary_host_names[]),
+ size_t size)
+{
+ this->secondaries_.size(size);
+
+ for (size_t i = 0; i < size; ++i) {
+
+ int ret = this->secondaries_[i].set(port_number,
+ secondary_host_names[i],
+ encode,
+ address_family);
+ if (ret) {
+ return ret;
+ }
+ }
+
+ return ACE_INET_Addr::set(port_number, host_name, encode, address_family);
+}
+#endif /* ACE_HAS_WCHAR */
+
int
ACE_Multihomed_INET_Addr::set (u_short port_number,
ACE_UINT32 primary_ip_addr,
diff --git a/ace/Multihomed_INET_Addr.h b/ace/Multihomed_INET_Addr.h
index dd3b2f45908..2f129691832 100644
--- a/ace/Multihomed_INET_Addr.h
+++ b/ace/Multihomed_INET_Addr.h
@@ -67,6 +67,25 @@ public:
const ACE_UINT32 *secondary_ip_addrs = 0,
size_t size = 0);
+#if defined (ACE_HAS_WCHAR)
+ /**
+ * WCHAR versions of the methods that take char's as arguments.
+ */
+ ACE_Multihomed_INET_Addr(u_short port_number,
+ const wchar_t primary_host_name[],
+ int encode = 1,
+ int address_family = AF_UNSPEC,
+ const wchar_t *(secondary_host_names[]) = 0,
+ size_t size = 0);
+ int set (u_short port_number,
+ const wchar_t primary_host_name[],
+ int encode = 1,
+ int address_family = AF_UNSPEC,
+ const wchar_t *(secondary_host_names[]) = 0,
+ size_t size = 0);
+
+#endif /* ACE_HAS_WCHAR */
+
/// Use compiler-generated copy constructor.
/// Use compiler-generated assignment operator.
diff --git a/tests/SOCK_SEQPACK_SCTP_Test.cpp b/tests/SOCK_SEQPACK_SCTP_Test.cpp
index 1e06ac6be73..1588689c1a8 100644
--- a/tests/SOCK_SEQPACK_SCTP_Test.cpp
+++ b/tests/SOCK_SEQPACK_SCTP_Test.cpp
@@ -1,5 +1,17 @@
// $Id$
//
+// *WARRANTY DISCLAIMER: LIMITATION OF LIABILITY. THE SOFTWARE AND
+// CONTENT ARE PROVIDED "AS IS" WITH NO EXPRESS OR IMPLIED
+// REPRESENTATIONS, GUARANTEES, OR WARRANTIES, INCLUDING BUT NOT LIMITED
+// TO SUCH REPRESENTATION, GUARANTEES OR WARRANTIES REGARDING THE
+// USABILITY, SUITABILITY, CONDITION, OPERATION OR ACCURACY THEREOF. *
+//
+// *ALL OTHER WARRANTIES AND CONDITIONS (EXPRESS, IMPLIED OR STATUTORY)
+// ARE HEREBY DISCLAIMED, SUCH WARRANTIES AND CONDITIONS INCLUDING
+// WITHOUT LIMITATION, ALL WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
+// TITLE, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+// COMPATIBILITY, AND SECURITY OR ACCURACY.*
+//
// ============================================================================
//
// = LIBRARY
@@ -17,6 +29,7 @@
//
// = AUTHOR
// Dave Craig <dwc@qualcomm.com>
+//
#include "test_config.h"
#include "ace/OS_NS_unistd.h"
@@ -292,7 +305,7 @@ spawn_test(bool ipv6_test)
ACE_Multihomed_INET_Addr(TTCPPORT, "::1") == ServerAddr));
#ifndef ACE_LACKS_FORK
- switch (ACE_OS::fork ("child"))
+ switch (ACE_OS::fork (ACE_TEXT ("child")))
{
case -1:
ACE_ERROR ((LM_ERROR,