#include <SystemException.h>
Inheritance diagram for CORBA::SystemException:
Public Member Functions | |
SystemException (const SystemException &src) | |
Copy constructor. | |
virtual | ~SystemException (void) |
Destructor. | |
ULong | minor (void) const |
Get the minor status. | |
void | minor (ULong m) |
Set the minor status. | |
CORBA::CompletionStatus | completed (void) const |
Get the completion status. | |
void | completed (CORBA::CompletionStatus c) |
Set the operation completion status. | |
virtual void | _raise (void) const =0 |
void | _tao_print_system_exception (FILE *f=stdout) const |
virtual ACE_CString | _info (void) const |
virtual void | _tao_encode (TAO_OutputCDR &cdr) const |
virtual void | _tao_decode (TAO_InputCDR &cdr) |
virtual CORBA::Exception * | _tao_duplicate (void) const |
Deep copy. | |
Static Public Member Functions | |
static SystemException * | _downcast (CORBA::Exception *exception) |
Narrow to a SystemException. | |
static const SystemException * | _downcast (const CORBA::Exception *exception) |
The const version of narrow operation to a SystemException. | |
static CORBA::ULong | _tao_minor_code (u_int location, int errno_value) |
Helper to create a minor status value. | |
static CORBA::ULong | _tao_errno (int errno_value) |
Protected Member Functions | |
SystemException (void) | |
Default constructor. | |
SystemException & | operator= (const SystemException &src) |
Assignment operator. | |
SystemException (CORBA::ULong code, CORBA::CompletionStatus completed) | |
Constructor using a repository id. | |
SystemException (const char *repository_id, const char *local_name, CORBA::ULong code, CORBA::CompletionStatus completed) | |
Constructor using a repository id. | |
Static Protected Member Functions | |
static const char * | _tao_get_omg_exception_description (const CORBA::SystemException &exc, CORBA::ULong minor_code) |
Private Attributes | |
CORBA::ULong | minor_ |
Minor code. | |
CORBA::CompletionStatus | completed_ |
Completion status. |
System exceptions are those defined in the CORBA specification; OMG-IDL defines these.
Definition at line 92 of file SystemException.h.
CORBA::SystemException::SystemException | ( | const SystemException & | src | ) |
Copy constructor.
Definition at line 90 of file SystemException.cpp.
00091 : CORBA::Exception (src), 00092 minor_ (src.minor_), 00093 completed_ (src.completed_) 00094 { 00095 }
CORBA::SystemException::~SystemException | ( | void | ) | [virtual] |
CORBA::SystemException::SystemException | ( | void | ) | [protected] |
Default constructor.
Definition at line 66 of file SystemException.cpp.
00067 : minor_ (0), 00068 completed_ (CORBA::COMPLETED_NO) 00069 { 00070 }
CORBA::SystemException::SystemException | ( | CORBA::ULong | code, | |
CORBA::CompletionStatus | completed | |||
) | [protected] |
Constructor using a repository id.
Definition at line 83 of file SystemException.cpp.
00085 : minor_ (code), 00086 completed_ (completed) 00087 { 00088 }
CORBA::SystemException::SystemException | ( | const char * | repository_id, | |
const char * | local_name, | |||
CORBA::ULong | code, | |||
CORBA::CompletionStatus | completed | |||
) | [protected] |
Constructor using a repository id.
Definition at line 72 of file SystemException.cpp.
00076 : CORBA::Exception (repository_id, 00077 local_name), 00078 minor_ (code), 00079 completed_ (completed) 00080 { 00081 }
ACE_INLINE const CORBA::SystemException * CORBA::SystemException::_downcast | ( | const CORBA::Exception * | exception | ) | [static] |
The const version of narrow operation to a SystemException.
Reimplemented from CORBA::Exception.
Definition at line 38 of file SystemException.inl.
ACE_INLINE CORBA::SystemException * CORBA::SystemException::_downcast | ( | CORBA::Exception * | exception | ) | [static] |
Narrow to a SystemException.
Reimplemented from CORBA::Exception.
Definition at line 32 of file SystemException.inl.
Referenced by TAO_ServerRequest::caught_exception(), CORBA::Environment::print_exception(), TAO_GIOP_Message_Base::send_reply_exception(), and TAO_ServerRequest::tao_send_reply_exception().
ACE_CString CORBA::SystemException::_info | ( | void | ) | const [virtual] |
Returns a string containing information about the exception. This function is not CORBA compliant.
Implements CORBA::Exception.
Definition at line 228 of file SystemException.cpp.
References CORBA::Exception::_rep_id(), _tao_get_omg_exception_description(), completed(), CORBA::COMPLETED_MAYBE, CORBA::COMPLETED_NO, CORBA::COMPLETED_YES, minor(), CORBA::OMGVMCID, ACE_OS::sprintf(), ACE_OS::strerror(), TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE, TAO_AMH_REPLY_LOCATION_CODE, TAO_CONNECTOR_REGISTRY_NO_USABLE_PROTOCOL, TAO_EACCES_MINOR_CODE, TAO_EAFNOSUPPORT_MINOR_CODE, TAO_EAGAIN_MINOR_CODE, TAO_EBADF_MINOR_CODE, TAO_EBUSY_MINOR_CODE, TAO_ECOMM_MINOR_CODE, TAO_ECONNREFUSED_MINOR_CODE, TAO_ECONNRESET_MINOR_CODE, TAO_EEXIST_MINOR_CODE, TAO_EFAULT_MINOR_CODE, TAO_EINVAL_MINOR_CODE, TAO_EMFILE_MINOR_CODE, TAO_ENFILE_MINOR_CODE, TAO_ENOENT_MINOR_CODE, TAO_ENOMEM_MINOR_CODE, TAO_ENOSYS_MINOR_CODE, TAO_ENOTSUP_MINOR_CODE, TAO_EPERM_MINOR_CODE, TAO_EPIPE_MINOR_CODE, TAO_ETIMEDOUT_MINOR_CODE, TAO_GUARD_FAILURE, TAO_IMPLREPO_MINOR_CODE, TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE, TAO_INVOCATION_RECV_REQUEST_MINOR_CODE, TAO_INVOCATION_SEND_REQUEST_MINOR_CODE, TAO_MPROFILE_CREATION_ERROR, TAO_ORB_CORE_INIT_LOCATION_CODE, TAO_POA_BEING_DESTROYED, TAO_POA_DISCARDING, TAO_POA_HOLDING, TAO_POA_INACTIVE, TAO_POLICY_NARROW_CODE, TAO_RTCORBA_THREAD_CREATION_LOCATION_CODE, TAO_TIMEOUT_CONNECT_MINOR_CODE, TAO_TIMEOUT_RECV_MINOR_CODE, TAO_TIMEOUT_SEND_MINOR_CODE, TAO_UNHANDLED_SERVER_CXX_EXCEPTION, TAO_UNSPECIFIED_MINOR_CODE, and TAO::VMCID.
00229 { 00230 // @@ there are a few other "user exceptions" in the CORBA scope, 00231 // they're not all standard/system exceptions ... really need to 00232 // either compare exhaustively against all those IDs (yeech) or 00233 // (preferably) to represent the exception type directly in the 00234 // exception value so it can be queried. 00235 00236 ACE_CString info = "system exception, ID '"; 00237 info += this->_rep_id (); 00238 info += "'\n"; 00239 00240 CORBA::ULong const VMCID = this->minor () & 0xFFFFF000u; 00241 00242 if (VMCID == TAO::VMCID) 00243 { 00244 // @@ Move the following code to a subroutine, it is too long already! 00245 const char *location = 0; 00246 switch (this->minor () & 0x00000F80u) 00247 { 00248 case TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE: 00249 location = "location forward failed"; 00250 break; 00251 case TAO_INVOCATION_SEND_REQUEST_MINOR_CODE: 00252 location = "send request failed"; 00253 break; 00254 case TAO_POA_DISCARDING: 00255 location = "poa in discarding state"; 00256 break; 00257 case TAO_POA_HOLDING: 00258 location = "poa in holding state"; 00259 break; 00260 case TAO_POA_INACTIVE: 00261 location = "poa in inactive state"; 00262 break; 00263 case TAO_UNHANDLED_SERVER_CXX_EXCEPTION: 00264 location = "unhandled c++ exception in server side"; 00265 break; 00266 case TAO_INVOCATION_RECV_REQUEST_MINOR_CODE: 00267 location = "failed to recv request response"; 00268 break; 00269 case TAO_CONNECTOR_REGISTRY_NO_USABLE_PROTOCOL: 00270 location = "all protocols failed to parse the IOR"; 00271 break; 00272 case TAO_MPROFILE_CREATION_ERROR: 00273 location = "error during MProfile creation"; 00274 break; 00275 case TAO_TIMEOUT_CONNECT_MINOR_CODE: 00276 location = "timeout during connect"; 00277 break; 00278 case TAO_TIMEOUT_SEND_MINOR_CODE: 00279 location = "timeout during send"; 00280 break; 00281 case TAO_TIMEOUT_RECV_MINOR_CODE: 00282 location = "timeout during recv"; 00283 break; 00284 case TAO_IMPLREPO_MINOR_CODE: 00285 location = "implrepo server exception"; 00286 break; 00287 case TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE: 00288 location = "endpoint initialization failure in Acceptor Registry"; 00289 break; 00290 case TAO_ORB_CORE_INIT_LOCATION_CODE: 00291 location = "ORB Core initialization failed"; 00292 break; 00293 case TAO_POLICY_NARROW_CODE: 00294 location = "Failure when narrowing a Policy"; 00295 break; 00296 case TAO_GUARD_FAILURE: 00297 location = "Failure when trying to acquire a guard/monitor"; 00298 break; 00299 case TAO_POA_BEING_DESTROYED: 00300 location = "POA has been destroyed or is currently being destroyed"; 00301 break; 00302 case TAO_AMH_REPLY_LOCATION_CODE: 00303 location = "Failure when trying to send AMH reply"; 00304 break; 00305 case TAO_RTCORBA_THREAD_CREATION_LOCATION_CODE: 00306 location = "Failure in thread creation for RTCORBA thread pool"; 00307 break; 00308 default: 00309 location = "unknown location"; 00310 } 00311 00312 const char *errno_indication; 00313 char unknown_errno [255]; 00314 CORBA::ULong minor_code = this->minor () & 0x7FU; 00315 switch (minor_code) 00316 { 00317 case TAO_UNSPECIFIED_MINOR_CODE: 00318 errno_indication = "unspecified errno"; 00319 break; 00320 case TAO_ETIMEDOUT_MINOR_CODE: 00321 errno_indication = "ETIMEOUT"; 00322 break; 00323 case TAO_ENFILE_MINOR_CODE: 00324 errno_indication = "ENFILE"; 00325 break; 00326 case TAO_EMFILE_MINOR_CODE: 00327 errno_indication = "EMFILE"; 00328 break; 00329 case TAO_EPIPE_MINOR_CODE: 00330 errno_indication = "EPIPE"; 00331 break; 00332 case TAO_ECONNREFUSED_MINOR_CODE: 00333 errno_indication = "ECONNREFUSED"; 00334 break; 00335 case TAO_ENOENT_MINOR_CODE: 00336 errno_indication = "ENOENT"; 00337 break; 00338 case TAO_EBADF_MINOR_CODE: 00339 errno_indication = "EBADF"; 00340 break; 00341 case TAO_ENOSYS_MINOR_CODE: 00342 errno_indication = "ENOSYS"; 00343 break; 00344 case TAO_EPERM_MINOR_CODE: 00345 errno_indication = "EPERM"; 00346 break; 00347 case TAO_EAFNOSUPPORT_MINOR_CODE: 00348 errno_indication = "EAFNOSUPPORT"; 00349 break; 00350 case TAO_EAGAIN_MINOR_CODE: 00351 errno_indication = "EAGAIN"; 00352 break; 00353 case TAO_ENOMEM_MINOR_CODE: 00354 errno_indication = "ENOMEM"; 00355 break; 00356 case TAO_EACCES_MINOR_CODE: 00357 errno_indication = "EACCES"; 00358 break; 00359 case TAO_EFAULT_MINOR_CODE: 00360 errno_indication = "EFAULT"; 00361 break; 00362 case TAO_EBUSY_MINOR_CODE: 00363 errno_indication = "EBUSY"; 00364 break; 00365 case TAO_EEXIST_MINOR_CODE: 00366 errno_indication = "EEXIST"; 00367 break; 00368 case TAO_EINVAL_MINOR_CODE: 00369 errno_indication = "EINVAL"; 00370 break; 00371 case TAO_ECOMM_MINOR_CODE: 00372 errno_indication = "ECOMM"; 00373 break; 00374 case TAO_ECONNRESET_MINOR_CODE: 00375 errno_indication = "ECONNRESET"; 00376 break; 00377 case TAO_ENOTSUP_MINOR_CODE: 00378 errno_indication = "ENOTSUP"; 00379 break; 00380 default: 00381 { 00382 // 7 bits of some other errno. 00383 ACE_OS::sprintf (unknown_errno, 00384 "low 7 bits of errno: %3u %s", 00385 minor_code, ACE_OS::strerror (minor_code)); 00386 00387 errno_indication = unknown_errno; 00388 } 00389 } 00390 00391 char buffer[BUFSIZ]; 00392 ACE_OS::sprintf (buffer, 00393 "TAO exception, " 00394 "minor code = %x (%s; %s), " 00395 "completed = %s\n", 00396 minor_code, 00397 location, 00398 errno_indication, 00399 (completed () == CORBA::COMPLETED_YES) ? "YES" : 00400 (completed () == CORBA::COMPLETED_NO) ? "NO" : 00401 (completed () == CORBA::COMPLETED_MAYBE) ? "MAYBE" : 00402 "garbage"); 00403 00404 info += buffer; 00405 } 00406 else if (VMCID == CORBA::OMGVMCID) 00407 { 00408 CORBA::ULong const minor_code = this->minor () & 0xFFFU; 00409 00410 const char *minor_description = 0; 00411 00412 if (minor_code > 0) 00413 minor_description = 00414 CORBA::SystemException::_tao_get_omg_exception_description ( 00415 *this, 00416 minor_code); 00417 else 00418 minor_description = "*unknown description*"; 00419 00420 char buffer[BUFSIZ]; 00421 ACE_OS::sprintf (buffer, 00422 "OMG minor code (%d), " 00423 "described as '%s', " 00424 "completed = %s\n", 00425 minor_code, 00426 minor_description, 00427 (completed () == CORBA::COMPLETED_YES) ? "YES" : 00428 (completed () == CORBA::COMPLETED_NO) ? "NO" : 00429 (completed () == CORBA::COMPLETED_MAYBE) ? "MAYBE" : 00430 "garbage"); 00431 00432 info += buffer; 00433 } 00434 else 00435 { 00436 char buffer[BUFSIZ]; 00437 ACE_OS::sprintf (buffer, 00438 "Unknown vendor minor code id (%x), " 00439 "minor code = %x, completed = %s\n", 00440 VMCID, 00441 this->minor (), // Use the raw minor code 00442 (completed () == CORBA::COMPLETED_YES) ? "YES" : 00443 (completed () == CORBA::COMPLETED_NO) ? "NO" : 00444 (completed () == CORBA::COMPLETED_MAYBE) ? "MAYBE" : 00445 "garbage"); 00446 00447 info += buffer; 00448 } 00449 00450 return info; 00451 }
virtual void CORBA::SystemException::_raise | ( | void | ) | const [pure virtual] |
void CORBA::SystemException::_tao_decode | ( | TAO_InputCDR & | cdr | ) | [virtual] |
Implements CORBA::Exception.
Definition at line 126 of file SystemException.cpp.
References ACE_InputCDR::read_ulong().
00127 { 00128 // The string is read by the caller, to determine the exact type of 00129 // the exception. We just decode the fields... 00130 // cdr.read_string (this->id ()); 00131 CORBA::ULong tmp; 00132 00133 if (cdr.read_ulong (this->minor_) 00134 && cdr.read_ulong (tmp)) 00135 { 00136 this->completed_ = CORBA::CompletionStatus (tmp); 00137 return; 00138 } 00139 00140 throw ::CORBA::MARSHAL (); 00141 }
CORBA::Exception * CORBA::SystemException::_tao_duplicate | ( | void | ) | const [virtual] |
void CORBA::SystemException::_tao_encode | ( | TAO_OutputCDR & | cdr | ) | const [virtual] |
Implements CORBA::Exception.
Definition at line 113 of file SystemException.cpp.
References ACE_OutputCDR::write_string(), and ACE_OutputCDR::write_ulong().
00114 { 00115 if (cdr.write_string (this->_rep_id ()) 00116 && cdr.write_ulong (this->minor ()) 00117 && cdr.write_ulong (this->completed ())) 00118 { 00119 return; 00120 } 00121 00122 throw ::CORBA::MARSHAL (); 00123 }
CORBA::ULong CORBA::SystemException::_tao_errno | ( | int | errno_value | ) | [static] |
Helper to translate a platform-specific errno to a TAO errno value.
Definition at line 144 of file SystemException.cpp.
References EBUSY, ECOMM, ENFILE, ENOSYS, ENOTSUP, TAO_EACCES_MINOR_CODE, TAO_EAFNOSUPPORT_MINOR_CODE, TAO_EAGAIN_MINOR_CODE, TAO_EBADF_MINOR_CODE, TAO_EBUSY_MINOR_CODE, TAO_ECOMM_MINOR_CODE, TAO_ECONNREFUSED_MINOR_CODE, TAO_ECONNRESET_MINOR_CODE, TAO_EEXIST_MINOR_CODE, TAO_EFAULT_MINOR_CODE, TAO_EINVAL_MINOR_CODE, TAO_EMFILE_MINOR_CODE, TAO_ENFILE_MINOR_CODE, TAO_ENOENT_MINOR_CODE, TAO_ENOMEM_MINOR_CODE, TAO_ENOSYS_MINOR_CODE, TAO_ENOTSUP_MINOR_CODE, TAO_EPERM_MINOR_CODE, TAO_EPIPE_MINOR_CODE, TAO_ETIMEDOUT_MINOR_CODE, and TAO_UNSPECIFIED_MINOR_CODE.
Referenced by _tao_minor_code().
00145 { 00146 switch (errno_value) 00147 { 00148 case 0: 00149 return TAO_UNSPECIFIED_MINOR_CODE; 00150 case ETIMEDOUT: 00151 return TAO_ETIMEDOUT_MINOR_CODE; 00152 case ENFILE: 00153 return TAO_ENFILE_MINOR_CODE; 00154 case EPIPE: 00155 return TAO_EPIPE_MINOR_CODE; 00156 case ECONNREFUSED: 00157 return TAO_ECONNREFUSED_MINOR_CODE; 00158 case ENOENT: 00159 return TAO_ENOENT_MINOR_CODE; 00160 00161 #if !defined (ACE_HAS_WINCE) 00162 case EMFILE: 00163 return TAO_EMFILE_MINOR_CODE; 00164 case EBADF: 00165 return TAO_EBADF_MINOR_CODE; 00166 case EPERM: 00167 return TAO_EPERM_MINOR_CODE; 00168 case EINVAL: 00169 return TAO_EINVAL_MINOR_CODE; 00170 #endif // ACE_HAS_WINCE 00171 00172 #if (ENOSYS != EFAULT) 00173 case ENOSYS: 00174 return TAO_ENOSYS_MINOR_CODE; 00175 #endif /* ENOSYS != EFAULT */ 00176 case EAFNOSUPPORT: 00177 return TAO_EAFNOSUPPORT_MINOR_CODE; 00178 case EAGAIN: 00179 return TAO_EAGAIN_MINOR_CODE; 00180 case ENOMEM: 00181 return TAO_ENOMEM_MINOR_CODE; 00182 case EACCES: 00183 return TAO_EACCES_MINOR_CODE; 00184 case EFAULT: 00185 return TAO_EFAULT_MINOR_CODE; 00186 case EBUSY: 00187 return TAO_EBUSY_MINOR_CODE; 00188 case EEXIST: 00189 return TAO_EEXIST_MINOR_CODE; 00190 case ECOMM: 00191 return TAO_ECOMM_MINOR_CODE; 00192 case ECONNRESET: 00193 return TAO_ECONNRESET_MINOR_CODE; 00194 #if (ENOTSUP != ENOSYS) 00195 case ENOTSUP: 00196 return TAO_ENOTSUP_MINOR_CODE; 00197 #endif /* ENOSYS != EFAULT */ 00198 default: 00199 // Mask off bottom 7 bits and return them. 00200 return errno_value & 0x7FU; 00201 } 00202 }
const char * CORBA::SystemException::_tao_get_omg_exception_description | ( | const CORBA::SystemException & | exc, | |
CORBA::ULong | minor_code | |||
) | [static, protected] |
Return the exception description associated with the given OMG minor code.
Definition at line 454 of file SystemException.cpp.
References TAO_BEGIN_VERSIONED_NAMESPACE_DECL::unknown_exception.
Referenced by _info().
00457 { 00458 #ifndef ACE_NDEBUG 00459 00460 static const char *UNKNOWN_TABLE[] = 00461 { 00462 "Unlisted user exception received by client.", // 1 00463 "Non-standard SystemException not supported.", // 2 00464 "An unknown user exception received by a portable interceptor." // 3 00465 }; 00466 00467 static const char *BAD_PARAM_TABLE[] = 00468 { 00469 "Failure to register, unregister, or lookup value factory.", // 1 00470 "RID already defined in IFR.", // 2 00471 "Name already used in the context in IFR.", // 3 00472 "Target is not a valid container.", // 4 00473 "Name clash in inherited context.", // 5 00474 "Incorrect type for abstract interface.", // 6 00475 "string_to_object conversion failed due to a bad scheme name.", // 7 00476 "string_to_object conversion failed due to a bad address.", // 8 00477 "string_to_object conversion failed due to a bad schema specific part.",// 9 00478 "string_to_object conversion failed due to non specific reason.", // 10 00479 "Attempt to derive abstract interface from non-abstract base interface in the Interface Repository.", // 11 00480 "Attempt to let a ValueDef support more than one non-abstract interface in the Interface Repository.", // 12 00481 "Attempt to use an incomplete TypeCode as a parameter.", // 13 00482 "Invalid object id passed to POA::create_reference_by_id.", // 14 00483 "Bad name argument in TypeCode operation.", // 15 00484 "Bad RepositoryId argument in TypeCode operation.", // 16 00485 "Invalid member name in TypeCode operation.", // 17 00486 "Duplicate label value in create_union_tc.", // 18 00487 "Incompatible TypeCode of label and discriminator in create_union_tc.", // 19 00488 "Supplied discriminator type illegitimate in create_union_tc.", // 20 00489 "Any passed to ServerRequest::set_exception does not contain an exception.", // 21 00490 "Unlisted user exception passed to ServerRequest::set_exception", // 22 00491 "wchar transmission code set not in service context.", // 23 00492 "Service context is not in OMG-defined range.", // 24 00493 "Enum value out of range.", // 25 00494 "Invalid service context Id in portable interceptor.", // 26 00495 "Attempt to call register_initial_reference with a null Object.", // 27 00496 "Invalid component Id in portable interceptor.", // 28 00497 "Invalid profile Id in portable interceptor.", // 29 00498 "Two or more Policy objects with the same PolicyType value supplied to Object::set_policy_overrides or PolicyManager::set_policy_overrides." // 30 00499 "Attempt to define a oneway operation with non-void result, out or inout parameters or user exceptions.", // 31 00500 "DII asked to create request for an implicit operation.", // 32, 00501 "An OTS/XA integration xa_ call returned XAER_INVAL.", // 33 00502 "Union branch modifier called with bad case label discriminator.", // 34 00503 "Illegal IDL context property name.", // 35 00504 "Illegal IDL property search string.", // 36 00505 "Illegal IDL context name.", // 37 00506 "Non-empty IDL context.", // 38 00507 "Unsupported RMI/IDL customer value type stream format.", // 39 00508 "ORB output stream does not support ValueOutputStream interface.", // 40 00509 "ORB input stream does not support ValueInputStream interface.", // 41 00510 "Character support limited to ISO 8859-1 for this object reference", // 42 00511 "Attempt to add a Pollable to a second PollableSet." // 43 00512 }; 00513 00514 static const char *IMP_LIMIT_TABLE[] = 00515 { 00516 "Unable to use any profile in IOR." // 1 00517 }; 00518 00519 static const char *INITIALIZE_TABLE[] = 00520 { 00521 "Priority range too restricted for ORB." // 1 00522 }; 00523 00524 00525 static const char *INV_OBJREF_TABLE[] = 00526 { 00527 "wchar Code Set support not specified.", // 1 00528 "Codeset component required for type using wchar or wstring data." // 2 00529 }; 00530 00531 static const char *MARSHAL_TABLE[] = 00532 { 00533 "Unable to locate value factory.", // 1 00534 "ServerRequest::set_result called before ServerRequest::ctx when the operation IDL contains a context clause.", // 2 00535 "NVList passed to ServerRequest::arguments does not describe all parameters passed by client.", // 3 00536 "Attempt to marshal Local object.", // 4 00537 "wchar or wstring data erroneously sent by client over GIOP 1.0 connection.", // 5 00538 "wchar or wstring data erroneously returned by server over GIOP 1.0 connection.", //6 00539 "Unsupported RMI/IDL custom value type stream format.", // 7 00540 "Custom data not compatible with ValueHandler read operation.", // 8 00541 "Codeset service contexts with different values recieved on the same connection." // 9 00542 00543 }; 00544 00545 static const char *BAD_TYPECODE_TABLE[] = 00546 { 00547 "Attempt to marshal incomplete TypeCode.", // 1 00548 "Member type code illegitimate in TypeCode operation.", // 2 00549 "Illegal parameter type." // 3 00550 }; 00551 00552 static const char *NO_IMPLEMENT_TABLE[] = 00553 { 00554 "Missing local value implementation.", // 1 00555 "Incompatible value implementation version.", // 2 00556 "Unable to use any profile in IOR.", // 3 00557 "Attempt to use DII on Local object.", // 4 00558 "Biomolecular Sequence Analysis iterator cannot be reset.", // 5 00559 "Biomolecular Sequence Analysis metadata is not available as XML.", // 6 00560 "Genomic Maps iterator cannot be rest.", // 7 00561 "Operation not implemented in local object" // 8 00562 }; 00563 00564 static const char *NO_RESOURCES_TABLE[] = 00565 { 00566 "Portable Interceptor operation not support in this binding.", // 1 00567 "No connection for request's priority." // 2 00568 }; 00569 00570 static const char *BAD_INV_ORDER_TABLE[] = 00571 { 00572 "Dependency exists in IFR preventing destruction of this object", // 1 00573 "Attempt to destroy indestructible objects in IFR.", // 2 00574 "Operation would deadlock.", // 3 00575 "ORB has shutdown.", // 4 00576 "Attempt to invoke \"send\" or \"invoke\" operation of the same \"Request\" object more than once.", // 5 00577 "Attempt to set a servant manager after one has already been set.", // 6 00578 "ServerRequest::arguments called more than once or after a call to ServerRequest::set_exception.", // 7 00579 "ServerRequest::ctx called more than once or before ServerRequest::arguments or after ServerRequest::ctx, ServerRequest::set_result or ServerRequest::set_exception.", // 8 00580 "ServerRequest::set_result called more than once or before ServerRequest::arguments or after ServerRequest::set_result or ServerRequest::set_exception.", // 9 00581 "Attempt to send a DII request after it was sent previously.", // 10 00582 "Attempt to poll a DII request or to retrieve its result before the request was sent.", // 11 00583 "Attempt to poll a DII request or to retrieve its result after the result was retrieved previously.", // 12 00584 "Attempt to poll a synchronous DII request or to retrieve results from a synchronous DII request.", // 13 00585 "Invalid portable interceptor call", // 14 00586 "Service context add failed in portable interceptor because a service context with the given id already exists.", // 15 00587 "Registration of PolicyFactory failed because a factory already exists for the given type.", // 16 00588 "POA cannot create POAs while undergoing destruction.", // 17 00589 "Attempt to reassign priority.", // 18 00590 "An OTS/XA integration xa_start call returned XAER_OUTSIDE.", // 19 00591 "An OTS/XA integration xa_call returned XAER_PROTO.", // 20 00592 "Transaction context of request & client threads do not match in interceptor.", // 21 00593 "Poller has not returned any response yet.", // 22 00594 "Registration of TaggedProfileFactory failed because a factory already exists for the given id.", // 23 00595 "Registration of TaggedComponentFactory failed because a factory already exists for the given id.", // 24 00596 "Iteration has no more elements.", // 25 00597 "Invocation of this operation not allowed in post_init." // 26 00598 00599 }; 00600 00601 static const char *TRANSIENT_TABLE[] = 00602 { 00603 "Request discarded because of resource exhaustion in POA, or because POA is in discarding state.", // 1 00604 "No usable profile in IOR.", // 2 00605 "Request cancelled.", // 3 00606 "POA destroyed." // 4 00607 }; 00608 00609 static const char *OBJ_ADAPTER_TABLE[] = 00610 { 00611 "System exception in AdapterActivator::unknown_adapter.", // 1 00612 "Incorrect servant type returned by servant manager", // 2 00613 "No default servant available [POA policy].", // 3 00614 "No servant manager available [POA policy].", // 4 00615 "Violation of POA policy by ServantActivator::incarnate.",// 5 00616 "Exception in PortableInterceptor::IORInterceptor.components_established.", // 6 00617 "Null servant returned by servant manager." // 7 00618 }; 00619 00620 static const char *DATA_CONVERSION_TABLE[] = 00621 { 00622 "Character does not map to negotiated transmission code set.", // 1 00623 "Failure of PriorityMapping object." // 2 00624 }; 00625 00626 static const char *OBJECT_NOT_EXIST_TABLE[] = 00627 { 00628 "Attempt to pass an unactivated (unregistered) value as an object reference.", // 1 00629 "Failed to create or locate Object Adapter.", // 2 00630 "Biomolecular Sequence Analysis Service is no longer available.", // 3 00631 "Object Adapter inactive.", // 4 00632 "This Poller has already delivered a reply to some client." // 5 00633 }; 00634 00635 static const char *INV_POLICY_TABLE[] = 00636 { 00637 "Unable to reconcile IOR specified policy with the effective policy override.", // 1 00638 "Invalid PolicyType.", // 2 00639 "No PolicyFactory has been registered for the given PolicyType." // 3 00640 }; 00641 00642 static const char *ACTIVITY_COMPLETED_TABLE[] = 00643 { 00644 "Activity context completed through timeout, or in some way other then requested." // 1 00645 }; 00646 00647 static const char *ACTIVITY_REQUIRED_TABLE[] = 00648 { 00649 "Calling thread lacks required activity context." // 1 00650 }; 00651 00652 static const char *BAD_OPERATION_TABLE[] = 00653 { 00654 "ServantManager returned wrong servant type.", // 1 00655 "Operation or attribute not known to target object." // 2 00656 }; 00657 00658 static const char *BAD_CONTEXT_TABLE[] = 00659 { 00660 "IDL context not found.", // 1 00661 "No matching IDL context property." // 2 00662 }; 00663 00664 static const char *CODESET_INCOMPATIBLE_TABLE[] = 00665 { 00666 "Codeset negotiation failed.", // 1 00667 "Codeset delivered in CodeSetContext is not supported by server as transmission codeset." // 2 00668 }; 00669 00670 static const char *INTF_REPOS_TABLE[] = 00671 { 00672 "Interface Repository not available.", // 1 00673 "No entry for requested interface in Interface Repository." // 2 00674 }; 00675 00676 if (minor_code == 0) 00677 return "*unknown description*"; 00678 00679 --minor_code; // Adjust to match table offset. 00680 00681 CORBA::UNKNOWN const * unknown_exception = 00682 dynamic_cast <const CORBA::UNKNOWN *> (&exc); 00683 if (unknown_exception != 0 00684 && minor_code < sizeof UNKNOWN_TABLE / sizeof (char *)) 00685 return UNKNOWN_TABLE[minor_code]; 00686 00687 CORBA::BAD_PARAM const * bad_param__exception = 00688 dynamic_cast <const CORBA::BAD_PARAM *> (&exc); 00689 if (bad_param__exception != 0 00690 && minor_code < sizeof BAD_PARAM_TABLE / sizeof (char *)) 00691 return BAD_PARAM_TABLE[minor_code]; 00692 00693 CORBA::IMP_LIMIT const * imp_limit_exception = 00694 dynamic_cast <const CORBA::IMP_LIMIT *> (&exc); 00695 if (imp_limit_exception != 0 00696 && minor_code < sizeof IMP_LIMIT_TABLE / sizeof (char *)) 00697 return IMP_LIMIT_TABLE[minor_code]; 00698 00699 CORBA::INITIALIZE const * initialize_exception = 00700 dynamic_cast <const CORBA::INITIALIZE *> (&exc); 00701 if (initialize_exception != 0 00702 && minor_code < sizeof INITIALIZE_TABLE / sizeof (char *)) 00703 return INITIALIZE_TABLE[minor_code]; 00704 00705 CORBA::INV_OBJREF const * inv_objref_exception = 00706 dynamic_cast <const CORBA::INV_OBJREF *> (&exc); 00707 if (inv_objref_exception != 0 00708 && minor_code < sizeof INV_OBJREF_TABLE / sizeof (char *)) 00709 return INV_OBJREF_TABLE[minor_code]; 00710 00711 CORBA::MARSHAL const * marshal_exception = 00712 dynamic_cast <const CORBA::MARSHAL *> (&exc); 00713 if (marshal_exception != 0 00714 && minor_code < sizeof MARSHAL_TABLE / sizeof (char *)) 00715 return MARSHAL_TABLE[minor_code]; 00716 00717 CORBA::BAD_TYPECODE const * bad_typecode_exception = 00718 dynamic_cast <const CORBA::BAD_TYPECODE *> (&exc); 00719 if (bad_typecode_exception != 0 00720 && minor_code < sizeof BAD_TYPECODE_TABLE / sizeof (char *)) 00721 return BAD_TYPECODE_TABLE[minor_code]; 00722 00723 CORBA::NO_IMPLEMENT const * no_implement_exception = 00724 dynamic_cast <const CORBA::NO_IMPLEMENT *> (&exc); 00725 if (no_implement_exception != 0 00726 && minor_code < sizeof NO_IMPLEMENT_TABLE / sizeof (char *)) 00727 return NO_IMPLEMENT_TABLE[minor_code]; 00728 00729 CORBA::NO_RESOURCES const * no_resource_exception = 00730 dynamic_cast <const CORBA::NO_RESOURCES *> (&exc); 00731 if (no_resource_exception != 0 00732 && minor_code < sizeof NO_RESOURCES_TABLE / sizeof (char *)) 00733 return NO_RESOURCES_TABLE[minor_code]; 00734 00735 CORBA::BAD_INV_ORDER const * bad_inv_order_exception = 00736 dynamic_cast <const CORBA::BAD_INV_ORDER *> (&exc); 00737 if (bad_inv_order_exception != 0 00738 && minor_code < sizeof BAD_INV_ORDER_TABLE / sizeof (char *)) 00739 return BAD_INV_ORDER_TABLE[minor_code]; 00740 00741 CORBA::TRANSIENT const * transient_exception = 00742 dynamic_cast <const CORBA::TRANSIENT *> (&exc); 00743 if (transient_exception != 0 00744 && minor_code < sizeof TRANSIENT_TABLE / sizeof (char *)) 00745 return TRANSIENT_TABLE[minor_code]; 00746 00747 CORBA::OBJ_ADAPTER const * obj_adapter_exception = 00748 dynamic_cast <const CORBA::OBJ_ADAPTER *> (&exc); 00749 if (obj_adapter_exception != 0 00750 && minor_code < sizeof OBJ_ADAPTER_TABLE / sizeof (char *)) 00751 return OBJ_ADAPTER_TABLE[minor_code]; 00752 00753 CORBA::DATA_CONVERSION const * data_conversion_exception = 00754 dynamic_cast <const CORBA::DATA_CONVERSION *> (&exc); 00755 if (data_conversion_exception != 0 00756 && minor_code < sizeof DATA_CONVERSION_TABLE / sizeof (char *)) 00757 return DATA_CONVERSION_TABLE[minor_code]; 00758 00759 CORBA::OBJECT_NOT_EXIST const * object_not_exist_exception = 00760 dynamic_cast <const CORBA::OBJECT_NOT_EXIST *> (&exc); 00761 if (object_not_exist_exception != 0 00762 && minor_code < sizeof OBJECT_NOT_EXIST_TABLE / sizeof (char *)) 00763 return OBJECT_NOT_EXIST_TABLE[minor_code]; 00764 00765 CORBA::INV_POLICY const * inv_policy_exception = 00766 dynamic_cast <const CORBA::INV_POLICY *> (&exc); 00767 if (inv_policy_exception != 0 00768 && minor_code < sizeof INV_POLICY_TABLE / sizeof (char *)) 00769 return INV_POLICY_TABLE[minor_code]; 00770 00771 CORBA::ACTIVITY_COMPLETED const * activity_completed_exception = 00772 dynamic_cast <const CORBA::ACTIVITY_COMPLETED *> (&exc); 00773 if (activity_completed_exception != 0 00774 && minor_code < sizeof ACTIVITY_COMPLETED_TABLE / sizeof (char *)) 00775 return ACTIVITY_COMPLETED_TABLE[minor_code]; 00776 00777 CORBA::ACTIVITY_REQUIRED const * activity_required_exception = 00778 dynamic_cast <const CORBA::ACTIVITY_REQUIRED *> (&exc); 00779 if (activity_required_exception != 0 00780 && minor_code < sizeof ACTIVITY_REQUIRED_TABLE / sizeof (char *)) 00781 return ACTIVITY_REQUIRED_TABLE[minor_code]; 00782 00783 CORBA::BAD_OPERATION const * bad_operation_exception = 00784 dynamic_cast <const CORBA::BAD_OPERATION *> (&exc); 00785 if (bad_operation_exception != 0 00786 && minor_code < sizeof BAD_OPERATION_TABLE / sizeof (char *)) 00787 return BAD_OPERATION_TABLE[minor_code]; 00788 00789 CORBA::BAD_CONTEXT const * bad_context_exception = 00790 dynamic_cast <const CORBA::BAD_CONTEXT *> (&exc); 00791 if (bad_context_exception != 0 00792 && minor_code < sizeof BAD_CONTEXT_TABLE / sizeof (char *)) 00793 return BAD_CONTEXT_TABLE[minor_code]; 00794 00795 CORBA::CODESET_INCOMPATIBLE const * codeset_incompatible_exception = 00796 dynamic_cast <const CORBA::CODESET_INCOMPATIBLE *> (&exc); 00797 if (codeset_incompatible_exception != 0 00798 && minor_code < sizeof CODESET_INCOMPATIBLE_TABLE / sizeof (char *)) 00799 return CODESET_INCOMPATIBLE_TABLE[minor_code]; 00800 00801 CORBA::INTF_REPOS const * intf_repos_exception = 00802 dynamic_cast <const CORBA::INTF_REPOS *> (&exc); 00803 if (intf_repos_exception != 0 00804 && minor_code < sizeof INTF_REPOS_TABLE / sizeof (char *)) 00805 return INTF_REPOS_TABLE[minor_code]; 00806 00807 #else 00808 ACE_UNUSED_ARG (exc); 00809 ACE_UNUSED_ARG (minor_code); 00810 #endif /* !ACE_NDEBUG */ 00811 00812 return "*unknown description*"; 00813 }
CORBA::ULong CORBA::SystemException::_tao_minor_code | ( | u_int | location, | |
int | errno_value | |||
) | [static] |
Helper to create a minor status value.
Definition at line 211 of file SystemException.cpp.
References _tao_errno(), and TAO::VMCID.
Referenced by CORBA::Object::_key(), CORBA::Object::_set_policy_overrides(), TAO_Profile::addressing_mode(), TAO_Thread_Lane_Resources::connector_registry(), CORBA::ORB::create_context_list(), CORBA::ORB::create_environment(), TAO::find_orb_context(), CORBA::ORB::get_default_context(), CORBA::ORB::get_next_response(), CORBA::ORB::get_service_information(), TAO::Invocation_Adapter::get_stub(), TAO_ORB_Core::init(), TAO::Profile_Transport_Resolver::init_inconsistent_policies(), TAO::LocateRequest_Invocation_Adapter::invoke(), TAO::Invocation_Adapter::invoke_twoway(), TAO::Synch_Twoway_Invocation::location_forward(), TAO_CORBALOC_Parser::make_canonical(), TAO_Connector::make_mprofile(), TAO_Connector_Registry::make_mprofile(), TAO_IIOP_Connector::make_profile(), TAO::LocateRequest_Invocation_Adapter::object_forwarded(), TAO::Invocation_Adapter::object_forwarded(), CORBA::ORB::object_to_string(), TAO_Acceptor_Registry::open(), TAO_Acceptor_Registry::open_i(), CORBA::ORB_init(), TAO_Profile::parse_string(), TAO_DLL_Parser::parse_string(), TAO_IIOP_Profile::parse_string_i(), CORBA::ORB::poll_next_response(), TAO_GIOP_Message_Base::process_request(), TAO_Service_Callbacks::raise_comm_failure(), TAO_Service_Callbacks::raise_transient_failure(), TAO_Transport::send_asynchronous_message_i(), TAO::Remote_Invocation::send_message(), CORBA::ORB::send_multiple_requests_deferred(), CORBA::ORB::send_multiple_requests_oneway(), TAO_Transport::send_synchronous_message_i(), TAO_ORB_Core::service_raise_comm_failure(), TAO_ORB_Core::set_endpoint_helper(), CORBA::ORB::string_to_object(), TAO::Profile_Transport_Resolver::try_connect_i(), CORBA::ORB::url_ior_string_to_object(), TAO_Profile::verify_orb_configuration(), TAO_Profile::verify_profile_version(), and TAO::Synch_Twoway_Invocation::wait_for_reply().
00212 { 00213 return 00214 TAO::VMCID 00215 | location 00216 | _tao_errno (errno_value); 00217 }
void CORBA::SystemException::_tao_print_system_exception | ( | FILE * | f = stdout |
) | const |
Print the system exception ex
to output determined by f
. This function is not CORBA compliant.
Definition at line 220 of file SystemException.cpp.
References ACE_ERROR, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, and LM_ERROR.
Referenced by CORBA::Environment::print_exception().
00221 { 00222 ACE_ERROR ((LM_ERROR, 00223 ACE_TEXT("(%P|%t) system exception, ID '%s'\n"), 00224 ACE_TEXT_CHAR_TO_TCHAR (this->_info ().c_str ()))); 00225 }
ACE_INLINE void CORBA::SystemException::completed | ( | CORBA::CompletionStatus | c | ) |
Set the operation completion status.
Definition at line 26 of file SystemException.inl.
References completed_.
00027 { 00028 this->completed_ = c; 00029 }
ACE_INLINE CORBA::CompletionStatus CORBA::SystemException::completed | ( | void | ) | const |
Get the completion status.
Definition at line 20 of file SystemException.inl.
References completed_.
Referenced by _info(), and TAO::Synch_Twoway_Invocation::handle_system_exception().
00021 { 00022 return this->completed_; 00023 }
ACE_INLINE void CORBA::SystemException::minor | ( | ULong | m | ) |
Set the minor status.
Definition at line 14 of file SystemException.inl.
References minor_.
00015 { 00016 this->minor_ = m; 00017 }
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE CORBA::ULong CORBA::SystemException::minor | ( | void | ) | const |
Get the minor status.
Definition at line 8 of file SystemException.inl.
References minor_.
Referenced by _info(), and TAO::Synch_Twoway_Invocation::handle_system_exception().
00009 { 00010 return this->minor_; 00011 }
CORBA::SystemException & CORBA::SystemException::operator= | ( | const SystemException & | src | ) | [protected] |
Assignment operator.
Definition at line 102 of file SystemException.cpp.
References completed_, minor_, and CORBA::Exception::operator=().
00103 { 00104 this->Exception::operator= (src); 00105 00106 this->minor_ = src.minor_; 00107 this->completed_ = src.completed_; 00108 00109 return *this; 00110 }
Completion status.
Definition at line 181 of file SystemException.h.
Referenced by completed(), and operator=().
CORBA::ULong CORBA::SystemException::minor_ [private] |
Minor code.
Definition at line 178 of file SystemException.h.
Referenced by minor(), and operator=().