#include <ATM_Addr.h>
Inheritance diagram for ACE_ATM_Addr:


Public Member Functions | |
| ACE_ATM_Addr (u_char selector=DEFAULT_SELECTOR) | |
| Default constructor. | |
| ACE_ATM_Addr (const ACE_ATM_Addr &, u_char selector=DEFAULT_SELECTOR) | |
| Copy constructor. | |
| ACE_ATM_Addr (const ATM_Addr *, u_char selector=DEFAULT_SELECTOR) | |
| ACE_ATM_Addr (const ACE_TCHAR sap[], u_char selector=DEFAULT_SELECTOR) | |
| ~ACE_ATM_Addr (void) | |
| Default dtor. | |
| void | init (u_char selector=DEFAULT_SELECTOR) |
| int | set (const ACE_ATM_Addr &, u_char selector=DEFAULT_SELECTOR) |
| Initializes from another ACE_ATM_Addr. | |
| int | set (const ATM_Addr *, u_char selector=DEFAULT_SELECTOR) |
| int | set (const ACE_TCHAR sap[], u_char selector=DEFAULT_SELECTOR) |
| virtual int | string_to_addr (const ACE_TCHAR sap[]) |
| virtual int | addr_to_string (ACE_TCHAR addr[], size_t addrlen) const |
| const ACE_TCHAR * | addr_to_string (void) const |
| virtual void * | get_addr (void) const |
| Return a pointer to the underlying network address. | |
| virtual void | set_addr (void *, int) |
| Set a pointer to the address. | |
| u_char | get_selector (void) const |
| Return the selector for network address. | |
| void | set_selector (u_char selector) |
| Set the selector for the network address. | |
| bool | operator== (const ACE_ATM_Addr &SAP) const |
| bool | operator!= (const ACE_ATM_Addr &SAP) const |
| Compare two addresses for inequality. | |
| void | dump (void) const |
| Dump the state of an object. | |
Public Attributes | |
| ACE_ALLOC_HOOK_DECLARE | |
| Declare the dynamic allocation hooks. | |
Static Public Attributes | |
| const long | LINE_RATE = 0L |
| const int | OPT_FLAGS_CPID = 0 |
| const int | OPT_FLAGS_PMP = 0 |
| const int | DEFAULT_SELECTOR = 0x0 |
Private Attributes | |
| ATM_Addr | atm_addr_ |
Definition at line 59 of file ATM_Addr.h.
|
|
Default constructor.
Definition at line 48 of file ATM_Addr.cpp. References ACE_OS::memset().
00050 : ACE_Addr (AF_ATM, 00051 #elif defined (ACE_HAS_LINUX_ATM) 00052 : ACE_Addr (PF_ATMSVC, 00053 #else 00054 : ACE_Addr (AF_UNSPEC, 00055 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */ 00056 sizeof this->atm_addr_) 00057 { 00058 // ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr"); 00059 (void) ACE_OS::memset ((void *) &this->atm_addr_, 00060 0, 00061 sizeof this->atm_addr_); 00062 this->init (selector); 00063 } |
|
||||||||||||
|
Copy constructor.
Definition at line 67 of file ATM_Addr.cpp. References ACE_TRACE.
00070 : ACE_Addr (AF_ATM, 00071 #elif defined (ACE_HAS_LINUX_ATM) 00072 : ACE_Addr (PF_ATMSVC, 00073 #else 00074 : ACE_Addr (AF_UNSPEC, 00075 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */ 00076 sizeof this->atm_addr_) 00077 { 00078 ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr"); 00079 this->set (sap, selector); 00080 #if defined (ACE_HAS_LINUX_ATM) 00081 this->atm_addr_.sockaddratmsvc.sas_family = PF_ATMSVC; 00082 this->atm_addr_.atmsap.blli[0].l3_proto = ATM_L3_NONE; 00083 this->atm_addr_.atmsap.blli[0].l2_proto = ATM_L2_NONE; 00084 this->atm_addr_.atmsap.bhli.hl_type = ATM_HL_NONE; 00085 #endif /* ACE_HAS_LINUX_ATM */ 00086 } |
|
||||||||||||
|
Creates an ACE_ATM_Addr from an ATMSAPAddress structure. This is vendor specific (FORE systems). May need to change when other vendors are supported. Definition at line 88 of file ATM_Addr.cpp. References ACE_TRACE, and ATM_Addr.
00091 : ACE_Addr (AF_ATM, 00092 #elif defined (ACE_HAS_LINUX_ATM) 00093 : ACE_Addr (PF_ATMSVC, 00094 #else 00095 : ACE_Addr (AF_UNSPEC, 00096 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */ 00097 sizeof this->atm_addr_) 00098 { 00099 ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr"); 00100 this->set (sap, selector); 00101 } |
|
||||||||||||
|
Initializes an ACE_ATM_Addr from the which can be "atm-address" (e.g., "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname" (e.g., "frisbee.cs.wustl.edu"). Definition at line 104 of file ATM_Addr.cpp. References ACE_TCHAR, and ACE_TRACE.
00107 : ACE_Addr (AF_ATM, 00108 #elif defined (ACE_HAS_LINUX_ATM) 00109 : ACE_Addr (PF_ATMSVC, 00110 #else 00111 : ACE_Addr (AF_UNSPEC, 00112 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */ 00113 sizeof this->atm_addr_) 00114 { 00115 ACE_TRACE ("ACE_ATM_Addr::ACE_ATM_Addr"); 00116 this->set (sap, selector); 00117 } |
|
|
Default dtor.
Definition at line 119 of file ATM_Addr.cpp.
00120 {
00121 }
|
|
|
Return the character representation of the ATM address (e.g., "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00"). Returns -1 if the of the is too small, else 0.(This version is non-reentrant since it returns a pointer to a static data area.) Definition at line 441 of file ATM_Addr.cpp. References ACE_TCHAR, ACE_TRACE, and MAXHOSTNAMELEN.
00442 {
00443 ACE_TRACE ("ACE_ATM_Addr::addr_to_string");
00444
00445 static ACE_TCHAR addr[MAXHOSTNAMELEN + 1];
00446 if (this->addr_to_string (addr,
00447 MAXHOSTNAMELEN + 1) < 0)
00448 return 0;
00449
00450 return addr;
00451 }
|
|
||||||||||||
|
Return the character representation of the ATM address (e.g., "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") storing it in the (which is assumed to be bytes long). This version is reentrant. Returns -1 if the of the is too small, else 0. Definition at line 375 of file ATM_Addr.cpp. References ACE_DEBUG, ACE_LIB_TEXT, ACE_TCHAR, ACE_TRACE, atm_addr_, LM_DEBUG, MAXNAMELEN, ACE_OS::memcpy(), ACE_OS::sprintf(), ACE_OS::strcpy(), and ACE_OS::strlen().
00377 {
00378 ACE_TRACE ("ACE_ATM_Addr::addr_to_string");
00379
00380 #if defined (ACE_HAS_FORE_ATM_XTI)
00381 ACE_TCHAR buffer[MAXNAMELEN + 1];
00382 struct atmnsap_addr nsap;
00383 ACE_OS::memcpy (nsap.atmnsap,
00384 atm_addr_.sap.t_atm_sap_addr.address,
00385 ATMNSAP_ADDR_LEN);
00386 ACE_OS::sprintf (buffer,
00387 ACE_LIB_TEXT ("%s"),
00388 atmnsap_ntoa (nsap));
00389
00390 size_t total_len = ACE_OS::strlen (buffer) + sizeof ('\0');
00391
00392 if (addrlen < total_len)
00393 return -1;
00394 else
00395 ACE_OS::strcpy (addr, buffer);
00396
00397 return 0;
00398 #elif defined (ACE_HAS_FORE_ATM_WS2)
00399 ACE_TCHAR buffer[MAXNAMELEN + 1];
00400 int i;
00401
00402 if (addrlen < ATM_ADDR_SIZE + 1)
00403 return -1;
00404
00405 for (i = 0; i < ATM_ADDR_SIZE; i++) {
00406 buffer[ i * 3 ] = '\0';
00407 ACE_OS::sprintf (buffer, ACE_LIB_TEXT ("%s%02x."),
00408 buffer,
00409 atm_addr_.satm_number.Addr[ i ]);
00410 }
00411
00412 buffer[ ATM_ADDR_SIZE * 3 - 1 ] = '\0';
00413 ACE_OS::strcpy (addr, buffer);
00414
00415 return 0;
00416 #elif defined (ACE_HAS_LINUX_ATM)
00417 ACE_TCHAR buffer[MAX_ATM_ADDR_LEN + 1];
00418 int total_len;
00419 if ((total_len = atm2text (buffer,
00420 sizeof buffer,
00421 (struct sockaddr *)& (atm_addr_.sockaddratmsvc),
00422 A2T_PRETTY)) < 0) {
00423 ACE_DEBUG ((LM_DEBUG,"ACE_ATM_Addr (addr_to_string): atm2text failed\n"));
00424 return -1;
00425 }
00426 if (addrlen < (size_t)total_len)
00427 return -1;
00428 else
00429 ACE_OS::strcpy (addr,
00430 buffer);
00431
00432 return 0;
00433 #else
00434 ACE_UNUSED_ARG (addr);
00435 ACE_UNUSED_ARG (addrlen);
00436 return -1;
00437 #endif /* ACE_HAS_FORE_ATM_XTI && ACE_HAS_FORE_ATM_WS2 */
00438 }
|
|
|
Dump the state of an object.
Reimplemented from ACE_Addr. Definition at line 504 of file ATM_Addr.cpp. References ACE_BEGIN_DUMP, ACE_DEBUG, ACE_END_DUMP, ACE_LIB_TEXT, ACE_MAX_FULLY_QUALIFIED_NAME_LEN, ACE_TCHAR, ACE_TRACE, LM_DEBUG, and ACE_OS::sprintf().
00505 {
00506 #if defined (ACE_HAS_DUMP)
00507 ACE_TRACE ("ACE_ATM_Addr::dump");
00508
00509 ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00510
00511 ACE_TCHAR s[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 16];
00512 ACE_OS::sprintf (s,
00513 ACE_LIB_TEXT ("%s"),
00514 this->addr_to_string ());
00515 ACE_DEBUG ((LM_DEBUG, ACE_LIB_TEXT ("%s"), s));
00516 ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00517 #endif /* ACE_HAS_DUMP */
00518 }
|
|
|
Return a pointer to the underlying network address.
Reimplemented from ACE_Addr. Definition at line 126 of file ATM_Addr.cpp. References ACE_TRACE, and atm_addr_. Referenced by ACE_ATM_Connector::connect(), ACE_ATM_Acceptor::get_local_addr(), ACE_ATM_Stream::get_peer_name(), and ACE_ATM_Acceptor::open().
|
|
|
Return the selector for network address.
Definition at line 8 of file ATM_Addr.inl. References ACE_TRACE, and atm_addr_.
00009 {
00010 ACE_TRACE ("ACE_ATM_Addr::get_selector");
00011 #if defined (ACE_HAS_FORE_ATM_XTI)
00012 return atm_addr_.sap.t_atm_sap_addr.address[ATMNSAP_ADDR_LEN - 1];
00013 #elif defined (ACE_HAS_FORE_ATM_WS2)
00014 return atm_addr_.satm_number.Addr[ ATM_ADDR_SIZE - 1 ];
00015 #elif defined (ACE_HAS_LINUX_ATM)
00016 return atm_addr_.sockaddratmsvc.sas_addr.prv[ATM_ESA_LEN - 1];
00017 #else
00018 return 0;
00019 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */
00020 }
|
|
|
Default initialization for non-address values (e.g., t_atm_sap_addr.SVE_tag_addr, t_atm_sap_addr.SVE_tag_selector) Definition at line 133 of file ATM_Addr.cpp. References atm_addr_, ACE_OS::memcpy(), and ACE_OS::memset(). Referenced by set().
00134 {
00135 #if defined (ACE_HAS_FORE_ATM_XTI)
00136 // Note: this approach may be FORE implementation-specific. When we
00137 // bind with tag_addr ABSENT and tag_selector PRESENT, only the
00138 // selector (i.e. address[19]) is used by the TP. The rest of the
00139 // local address is filled in by the TP and can be obtained via the
00140 // 'ret' parameter or with t_getname ()/t_getprotaddr ().
00141
00142 atm_addr_.addressType = (u_int16_t) AF_ATM;
00143
00144 atm_addr_.sap.t_atm_sap_addr.SVE_tag_addr = (int8_t) T_ATM_ABSENT;
00145 atm_addr_.sap.t_atm_sap_addr.SVE_tag_selector = (int8_t) T_ATM_PRESENT;
00146
00147 atm_addr_.sap.t_atm_sap_addr.address_format = (u_int8_t) T_ATM_ENDSYS_ADDR;
00148 atm_addr_.sap.t_atm_sap_addr.address_length = ATMNSAP_ADDR_LEN;
00149 atm_addr_.sap.t_atm_sap_addr.address[ATMNSAP_ADDR_LEN - 1] = selector;
00150
00151 atm_addr_.sap.t_atm_sap_layer2.SVE_tag = (int8_t) T_ATM_ABSENT;
00152 atm_addr_.sap.t_atm_sap_layer3.SVE_tag = (int8_t) T_ATM_ABSENT;
00153
00154 atm_addr_.sap.t_atm_sap_appl.SVE_tag = (int8_t) T_ATM_PRESENT;
00155 atm_addr_.sap.t_atm_sap_appl.ID_type = (u_int8_t) T_ATM_USER_APP_ID;
00156
00157 ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_appl.ID.user_defined_ID,
00158 BHLI_MAGIC,
00159 sizeof atm_addr_.sap.t_atm_sap_appl.ID);
00160 #elif defined (ACE_HAS_FORE_ATM_WS2)
00161 ACE_OS::memset ((void *)&atm_addr_, 0, sizeof atm_addr_);
00162 atm_addr_.satm_number.Addr[ ATM_ADDR_SIZE - 1 ] = (char)selector;
00163 atm_addr_.satm_family = AF_ATM;
00164 atm_addr_.satm_number.AddressType = ATM_NSAP;
00165 atm_addr_.satm_number.NumofDigits = ATM_ADDR_SIZE;
00166 atm_addr_.satm_blli.Layer2Protocol = SAP_FIELD_ABSENT;
00167 atm_addr_.satm_blli.Layer3Protocol = SAP_FIELD_ABSENT;
00168 atm_addr_.satm_bhli.HighLayerInfoType = SAP_FIELD_ABSENT;
00169
00170 // Need to know the correspondence.
00171 //atm_addr_.sap.t_atm_sap_appl.SVE_tag = (int8_t) T_ATM_PRESENT;
00172 //atm_addr_.sap.t_atm_sap_appl.ID_type = (u_int8_t) T_ATM_USER_APP_ID;
00173 //ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_appl.ID.user_defined_ID,
00174 // BHLI_MAGIC,
00175 // sizeof atm_addr_.sap.t_atm_sap_appl.ID);
00176 #elif defined (ACE_HAS_LINUX_ATM)
00177 atm_addr_.sockaddratmsvc.sas_family = AF_ATMSVC;
00178 atm_addr_.sockaddratmsvc.sas_addr.prv[ATM_ESA_LEN - 1] = (char)selector;
00179 atm_addr_.atmsap.blli[0].l3_proto = ATM_L3_NONE;
00180 atm_addr_.atmsap.blli[0].l2_proto = ATM_L2_NONE;
00181 atm_addr_.atmsap.bhli.hl_type = ATM_HL_NONE;
00182 #else
00183 ACE_UNUSED_ARG (selector);
00184 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */
00185 }
|
|
|
Compare two addresses for inequality.
Definition at line 474 of file ATM_Addr.cpp. References ACE_TRACE.
00475 {
00476 ACE_TRACE ("ACE_ATM_Addr::operator !=");
00477 return ! ((*this) == sap);
00478 }
|
|
|
Compare two addresses for equality. The addresses are considered equal if they contain the same ATM address. Q: Is there any other check for equality needed for ATM? Definition at line 483 of file ATM_Addr.cpp. References ACE_TRACE, ATM_Addr, atm_addr_, and ACE_OS::memcmp().
00484 {
00485 ACE_TRACE ("ACE_ATM_Addr::operator ==");
00486
00487 #if defined (ACE_HAS_LINUX_ATM)
00488 return (atm_equal ((const struct sockaddr *)& (this->atm_addr_.sockaddratmsvc),
00489 (const struct sockaddr *)& (sap.atm_addr_.sockaddratmsvc),
00490 0,
00491 0)
00492 &&
00493 sap_equal (& (this->atm_addr_.atmsap),
00494 & (sap.atm_addr_.atmsap),
00495 0));
00496 #else
00497 return ACE_OS::memcmp (&atm_addr_,
00498 &sap.atm_addr_,
00499 sizeof (ATM_Addr)) == 0;
00500 #endif /* ACE_HAS_LINUX_ATM */
00501 }
|
|
||||||||||||
|
Initializes an ACE_ATM_Addr from the which can be "atm-address" (e.g., "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname" (e.g., "frisbee.cs.wustl.edu"). Definition at line 234 of file ATM_Addr.cpp. References ACE_TCHAR, ACE_TRACE, atm_addr_, init(), set_selector(), and string_to_addr().
00236 {
00237 ACE_TRACE ("ACE_ATM_Addr::set");
00238 int ret;
00239
00240 this->init (selector);
00241
00242 #if defined (ACE_HAS_FORE_ATM_XTI)
00243 atm_addr_.sap.t_atm_sap_addr.SVE_tag_addr =
00244 (int8_t) T_ATM_PRESENT;
00245 #endif /* ACE_HAS_FORE_ATM_XTI */
00246
00247 ret = this -> string_to_addr (address);
00248 this -> set_selector (selector);
00249 return ret;
00250 }
|
|
||||||||||||
|
Initializes an ACE_ATM_Addr from an ATMSAPAddress/sockaddr_atm structure. This is vendor specific (FORE systems). May need to change when other vendors are supported. Definition at line 211 of file ATM_Addr.cpp. References ACE_TRACE, ATM_Addr, ACE_Addr::base_set(), init(), and ACE_OS::memcpy().
00213 {
00214 ACE_TRACE ("ACE_ATM_Addr::set");
00215
00216 this->init (selector);
00217
00218 #if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
00219 this->ACE_Addr::base_set (AF_ATM,
00220 #elif defined (ACE_HAS_LINUX_ATM)
00221 this->ACE_Addr::base_set (PF_ATMSVC,
00222 #else
00223 this->ACE_Addr::base_set (AF_UNSPEC,
00224 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
00225 sizeof (*sap));
00226
00227 (void) ACE_OS::memcpy ((void *) &this->atm_addr_,
00228 (void *) sap,
00229 sizeof this->atm_addr_);
00230 return 0;
00231 }
|
|
||||||||||||
|
Initializes from another ACE_ATM_Addr.
Definition at line 188 of file ATM_Addr.cpp. References ACE_ASSERT, ACE_TRACE, atm_addr_, ACE_Addr::base_set(), ACE_Addr::get_size(), ACE_Addr::get_type(), init(), and ACE_OS::memcpy().
00190 {
00191 ACE_TRACE ("ACE_ATM_Addr::set");
00192
00193 this->init (selector);
00194
00195 this->ACE_Addr::base_set (sap.get_type (),
00196 sap.get_size ());
00197
00198 #if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
00199 ACE_ASSERT (sap.get_type () == AF_ATM);
00200 #elif defined (ACE_HAS_LINUX_ATM)
00201 ACE_ASSERT (sap.get_type () == PF_ATMSVC);
00202 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
00203
00204 (void) ACE_OS::memcpy ((void *) &this->atm_addr_,
00205 (void *) &sap.atm_addr_,
00206 sizeof this->atm_addr_);
00207 return 0;
00208 }
|
|
||||||||||||
|
Set a pointer to the address.
Reimplemented from ACE_Addr. Definition at line 455 of file ATM_Addr.cpp. References ACE_TRACE, ACE_Addr::base_set(), and ACE_OS::memcpy().
00456 {
00457 ACE_TRACE ("ACE_ATM_Addr::set_addr");
00458
00459 #if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
00460 this->ACE_Addr::base_set (AF_ATM,
00461 #elif defined (ACE_HAS_LINUX_ATM)
00462 this->ACE_Addr::base_set (PF_ATMSVC,
00463 #else
00464 this->ACE_Addr::base_set (AF_UNSPEC,
00465 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_WS2 */
00466 len);
00467 ACE_OS::memcpy ((void *) &this->atm_addr_,
00468 (void *) addr, len);
00469 }
|
|
|
Set the selector for the network address.
Definition at line 23 of file ATM_Addr.inl. References ACE_TRACE, and atm_addr_. Referenced by ACE_ATM_Acceptor::open(), and set().
00024 {
00025 ACE_TRACE ("ACE_ATM_Addr::set_selector");
00026 #if defined (ACE_HAS_FORE_ATM_XTI)
00027 atm_addr_.sap.t_atm_sap_addr.address[ATMNSAP_ADDR_LEN - 1] = selector;
00028 #elif defined (ACE_HAS_FORE_ATM_WS2)
00029 atm_addr_.satm_number.Addr[ ATM_ADDR_SIZE - 1 ] = selector;
00030 #elif defined (ACE_HAS_LINUX_ATM)
00031 atm_addr_.sockaddratmsvc.sas_addr.prv[ATM_ESA_LEN - 1] = selector;
00032 #else
00033 ACE_UNUSED_ARG (selector);
00034 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */
00035 }
|
|
|
Initializes an ACE_ATM_Addr from the which can be "atm-address" (e.g., "47.0005.80.ffe100.0000.f20f.2200.0020480694f9.00") or "hostname" (e.g., "frisbee.cs.wustl.edu"). Definition at line 255 of file ATM_Addr.cpp. References ACE_DEBUG, ACE_TCHAR, ACE_TRACE, atm_addr_, ACE_Addr::base_set(), LM_DEBUG, ACE_OS::memcpy(), ACE_OS::printf(), and ACE_OS::strcmp(). Referenced by set().
00256 {
00257 ACE_TRACE ("ACE_ATM_Addr::string_to_addr");
00258
00259 #if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2)
00260 this->ACE_Addr::base_set (AF_ATM,
00261 #elif defined (ACE_HAS_LINUX_ATM)
00262 this->ACE_Addr::base_set (PF_ATMSVC,
00263 #else
00264 this->ACE_Addr::base_set (AF_UNSPEC,
00265 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */
00266 sizeof this->atm_addr_);
00267 #if defined (ACE_HAS_FORE_ATM_XTI)
00268 struct hostent *entry;
00269 struct atmnsap_addr *nsap;
00270
00271 // Yow, someone gave us a NULL ATM address!
00272 if (sap == 0)
00273 {
00274 errno = EINVAL;
00275 return -1;
00276 }
00277 else if ((entry = gethostbyname_atmnsap ((ACE_TCHAR *)sap)) != 0)
00278 {
00279 ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_addr.address,
00280 entry->h_addr_list[0],
00281 ATMNSAP_ADDR_LEN - 1);
00282 }
00283 else if ((nsap = atmnsap_addr (sap)) != 0)
00284 {
00285 ACE_OS::memcpy (atm_addr_.sap.t_atm_sap_addr.address,
00286 nsap->atmnsap,
00287 ATMNSAP_ADDR_LEN);
00288 }
00289 else {
00290 errno = EINVAL;
00291 return -1;
00292 }
00293 #elif defined (ACE_HAS_FORE_ATM_WS2)
00294 DWORD dwValue;
00295 HANDLE hLookup;
00296 WSAQUERYSETW qsRestrictions;
00297 CSADDR_INFO csaBuffer;
00298 WCHAR tmpWStr[100];
00299
00300 MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, sap, -1, tmpWStr, 100);
00301
00302 csaBuffer.LocalAddr.iSockaddrLength = sizeof (struct sockaddr_atm);
00303 csaBuffer.LocalAddr.lpSockaddr = (struct sockaddr *)&atm_addr_;
00304 csaBuffer.RemoteAddr.iSockaddrLength = sizeof (struct sockaddr_atm);
00305 csaBuffer.RemoteAddr.lpSockaddr = (struct sockaddr *)&atm_addr_;
00306
00307 qsRestrictions.dwSize = sizeof (WSAQUERYSETW);
00308 qsRestrictions.lpszServiceInstanceName = 0;
00309 qsRestrictions.lpServiceClassId = &FORE_NAME_CLASS;
00310 qsRestrictions.lpVersion = 0;
00311 qsRestrictions.lpszComment = 0;
00312 qsRestrictions.dwNameSpace = FORE_NAME_SPACE;
00313 qsRestrictions.lpNSProviderId = 0;
00314 qsRestrictions.lpszContext = L"";
00315 qsRestrictions.dwNumberOfProtocols = 0;
00316 qsRestrictions.lpafpProtocols = 0;
00317 qsRestrictions.lpszQueryString = tmpWStr;
00318 qsRestrictions.dwNumberOfCsAddrs = 1;
00319 qsRestrictions.lpcsaBuffer = &csaBuffer;
00320 qsRestrictions.lpBlob = 0; //&blob;
00321
00322 if (::WSALookupServiceBeginW (&qsRestrictions, LUP_RETURN_ALL, &hLookup)
00323 == SOCKET_ERROR) {
00324 ACE_OS::printf ("Error: WSALookupServiceBeginW failed! %d\n",
00325 ::WSAGetLastError ());
00326 return -1;
00327 }
00328
00329 dwValue = sizeof (WSAQUERYSETW);
00330
00331 if (::WSALookupServiceNextW (hLookup, 0, &dwValue, &qsRestrictions)
00332 == SOCKET_ERROR) {
00333 if (WSAGetLastError () != WSA_E_NO_MORE) {
00334 ACE_OS::printf ("Error: WSALookupServiceNextW failed! %d\n",
00335 ::WSAGetLastError ());
00336 return -1;
00337 }
00338 }
00339
00340 if (WSALookupServiceEnd (hLookup) == SOCKET_ERROR) {
00341 ACE_OS::printf ("Error : WSALookupServiceEnd failed! %d \n",
00342 ::WSAGetLastError ());
00343 errno = EINVAL;
00344 return -1;
00345 }
00346 #elif defined (ACE_HAS_LINUX_ATM)
00347 if (sap == 0 || !ACE_OS::strcmp (sap,"")) {
00348 errno = EINVAL;
00349 return -1;
00350 }
00351
00352 if (text2atm ((ACE_TCHAR *)sap,
00353 (struct sockaddr *)& (atm_addr_.sockaddratmsvc),
00354 sizeof (atm_addr_.sockaddratmsvc),
00355 T2A_SVC | T2A_NAME) < 0) {
00356 ACE_DEBUG (LM_DEBUG,
00357 "Error : text2atm failed!\n");
00358 errno = EINVAL;
00359 return -1;
00360 }
00361 #else
00362 ACE_UNUSED_ARG (sap);
00363
00364 return 0;
00365 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 || ACE_HAS_LINUX_ATM */
00366
00367 #if defined (ACE_HAS_FORE_ATM_XTI) || defined (ACE_HAS_FORE_ATM_WS2) || defined (ACE_HAS_LINUX_ATM)
00368 return 0;
00369 #endif /* ACE_HAS_FORE_ATM_XTI || ACE_HAS_FORE_ATM_WS2 */
00370 }
|
|
|
Declare the dynamic allocation hooks.
Reimplemented from ACE_Addr. Definition at line 175 of file ATM_Addr.h. |
|
|
Definition at line 184 of file ATM_Addr.h. Referenced by addr_to_string(), get_addr(), get_selector(), init(), operator==(), set(), set_selector(), and string_to_addr(). |
|
|
Definition at line 43 of file ATM_Addr.cpp. |
|
|
Definition at line 40 of file ATM_Addr.cpp. |
|
|
Definition at line 41 of file ATM_Addr.cpp. |
|
|
Definition at line 42 of file ATM_Addr.cpp. |
1.3.6