diff options
author | dwcraig <dwcraig@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-09 20:41:18 +0000 |
---|---|---|
committer | dwcraig <dwcraig@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-09 20:41:18 +0000 |
commit | 1382cb3afa9d44bb528b79cd43d4eec93d3c660f (patch) | |
tree | 5edec508dff37aefd3a0de72a42b77a87ca1eb7d | |
parent | 2058d8390f67ce2f8ef0598428ea477455056c2d (diff) | |
download | ATCD-1382cb3afa9d44bb528b79cd43d4eec93d3c660f.tar.gz |
Add wchar support to ACE_Multihomed_INET_Addr
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | ace/Multihomed_INET_Addr.cpp | 66 | ||||
-rw-r--r-- | ace/Multihomed_INET_Addr.h | 19 | ||||
-rw-r--r-- | tests/SOCK_SEQPACK_SCTP_Test.cpp | 15 |
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, |