diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-07 21:29:03 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-07 21:29:03 +0000 |
commit | 71a21d1d409869e57bd2cc2e4ad6dba333f3b7b2 (patch) | |
tree | ad9aa1d6949bfffc4c2ee287a351271ebc275471 | |
parent | 5a2e0d4a4d171f5337b1fce257bce3d22e086d57 (diff) | |
download | ATCD-71a21d1d409869e57bd2cc2e4ad6dba333f3b7b2.tar.gz |
ChangeLogTag: Wed Jul 07 16:25:05 1999 David L. Levine <levine@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLog-99c | 194 | ||||
-rw-r--r-- | TAO/tao/Exception.cpp | 47 | ||||
-rw-r--r-- | TAO/tao/corbafwd.h | 51 |
3 files changed, 176 insertions, 116 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c index b4d0396ecd2..3eb35df4560 100644 --- a/TAO/ChangeLog-99c +++ b/TAO/ChangeLog-99c @@ -1,123 +1,137 @@ +Wed Jul 07 16:25:05 1999 David L. Levine <levine@cs.wustl.edu> + + * tao/corbafwd.h,Exception.cpp (_tao_errno,_info): + 1) Added support for these errnos: + EAGAIN, ENOMEM, EACCES, EFAULT, EBUSY, EEXIST + 2) Changed minor code to use 5 bits for location and + 7 for errno encoding, instead of 8 and 4, respectively. + 3) If an unknown errno is given to _tao_errno, it + returns the low 7 bits. These are stored directly + in the 7 bit minor code field. _info then prints + out the value. Not perfect, due to the loss of + information, but it often provides a lot more useful + information than it did before. [18] + Wed Jul 7 16:14:55 1999 Carlos O'Ryan <coryan@cs.wustl.edu> - * tao/Sequence_T.h: - * tao/Sequence_T.cpp: - Fixed assignment from TAO_Object_Field_T<> to - TAO_Object_Manager<>. + * tao/Sequence_T.h: + * tao/Sequence_T.cpp: + Fixed assignment from TAO_Object_Field_T<> to + TAO_Object_Manager<>. Wed Jul 7 15:50:10 1999 Vishal Kachroo <vishal@cs.wustl.edu> - * orbsvcs/orbsvcs/IOR_Multicast.cpp: Removed some commented out - code that was not required. + * orbsvcs/orbsvcs/IOR_Multicast.cpp: Removed some commented out + code that was not required. Wed Jul 7 15:35:24 1999 Ossama Othman <othman@cs.wustl.edu> - * docs/Options.html: + * docs/Options.html: - Added documentation for the -ORBProtocolFactory option. + Added documentation for the -ORBProtocolFactory option. - * performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl: + * performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl: - Changed some print statement to print on stderr so that they get - printed before the tests actually run. + Changed some print statement to print on stderr so that they get + printed before the tests actually run. - * tao/UIOP_Acceptor.{h,cpp}: + * tao/UIOP_Acceptor.{h,cpp}: - Added a destructor to aid in post-error rendezvous point clean - up. + Added a destructor to aid in post-error rendezvous point clean + up. - * tao/Acceptor_Registry.cpp (~TAO_Acceptor_Registry): + * tao/Acceptor_Registry.cpp (~TAO_Acceptor_Registry): - Added a call to TAO_Acceptor_Registry::close_all () in the - TAO_Acceptor_Registry destructor. The call in the destructor - shouldn't be necessary since close_all () is already called by - the ORB, but it is safer to add the call to the destructor. + Added a call to TAO_Acceptor_Registry::close_all () in the + TAO_Acceptor_Registry destructor. The call in the destructor + shouldn't be necessary since close_all () is already called by + the ORB, but it is safer to add the call to the destructor. - * tao/Acceptor_Registry.cpp (open, open_default): - * tao/Connector_Registry.cpp (open): + * tao/Acceptor_Registry.cpp (open, open_default): + * tao/Connector_Registry.cpp (open): - Added some useful and/or missing error checks. + Added some useful and/or missing error checks. - Fixed some memory leaks that may occur when an error occurs. + Fixed some memory leaks that may occur when an error occurs. - * tao/Connector_Registry.cpp (TAO_Connector_Registry): + * tao/Connector_Registry.cpp (TAO_Connector_Registry): - Added connectors_ member to the member initializer list. + Added connectors_ member to the member initializer list. - * tao/Connector_Registry.cpp (create_profile): - * tao/default_resource.cpp (init): + * tao/Connector_Registry.cpp (create_profile): + * tao/default_resource.cpp (init): - Explicitly initialized some variables to fix potential - "uninitialized variable" warnings. + Explicitly initialized some variables to fix potential + "uninitialized variable" warnings. - * tao/default_resource.cpp: + * tao/default_resource.cpp: - Added protocol_factories_ member to TAO_Default_Resource_Factory - member initializer list. + Added protocol_factories_ member to TAO_Default_Resource_Factory + member initializer list. - Fixed potential memory leaks due to failed (and unlikely) - insertions into the protocol factory set. + Fixed potential memory leaks due to failed (and unlikely) + insertions into the protocol factory set. - * tao/Resource_Factory.h (TAO_Protocol_Item): + * tao/Resource_Factory.h (TAO_Protocol_Item): - Minor spelling correction in comment. + Minor spelling correction in comment. Wed Jul 7 14:24:08 1999 Carlos O'Ryan <coryan@cs.wustl.edu> - * tao/Makefile: - * tao/varout.h: - * tao/varout.i: - * tao/varout.cpp: - * tao/CDR_Interpreter.cpp: - * tao/DomainC.cpp: - * tao/DynAnyC.cpp: - * tao/IORC.cpp: - * tao/IORC.h: - * tao/IORC.i: - * tao/IORManipulation.cpp: - * tao/MessagingC.cpp: - * tao/ORB.cpp: - * tao/ORB_Core.h: - * tao/Object.cpp: - * tao/PolicyC.cpp: - * tao/PollableC.cpp: - * tao/decode.cpp: - * tao/deep_free.cpp: - * tao/encode.cpp: - Changed TAO_Object_Field_T to take two arguments, that way it - can have an assignment operator from Object_Manager and properly - increment the reference count in that case [BUGID:16] - - * TAO_IDL/Makefile: - * TAO_IDL/be/be_sequence.cpp: - * TAO_IDL/be/be_visitor_sequence.cpp: - * TAO_IDL/be/be_visitor_field/field_ch.cpp: - * TAO_IDL/be/be_visitor_interface/any_op_cs.cpp: - * TAO_IDL/be/be_visitor_sequence/elemtype.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_object_manager_ch.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_object_manager_ci.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp: - * TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp: - * TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp: - * TAO_IDL/be/be_visitor_union_branch/private_ch.cpp: - * TAO_IDL/be/be_visitor_union_branch/public_access_cs.cpp: - * TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp: - * TAO_IDL/be/be_visitor_union_branch/public_ci.cpp: - * TAO_IDL/be_include/be_sequence.h: - * TAO_IDL/be_include/be_visitor_sequence/sequence_ch.h: - * TAO_IDL/be_include/be_visitor_sequence/sequence_ci.h: - The IDL compiler generates proper code with two arguments now. - - * tests/Param_Test/tmplinst.cpp: - Fixed template instantiations - - * examples/Simple/bank/run_test.pl: - * orbsvcs/tests/Property/run_test.pl: - Fixed output and fine tune execution time. + * tao/Makefile: + * tao/varout.h: + * tao/varout.i: + * tao/varout.cpp: + * tao/CDR_Interpreter.cpp: + * tao/DomainC.cpp: + * tao/DynAnyC.cpp: + * tao/IORC.cpp: + * tao/IORC.h: + * tao/IORC.i: + * tao/IORManipulation.cpp: + * tao/MessagingC.cpp: + * tao/ORB.cpp: + * tao/ORB_Core.h: + * tao/Object.cpp: + * tao/PolicyC.cpp: + * tao/PollableC.cpp: + * tao/decode.cpp: + * tao/deep_free.cpp: + * tao/encode.cpp: + Changed TAO_Object_Field_T to take two arguments, that way it + can have an assignment operator from Object_Manager and properly + increment the reference count in that case [BUGID:16] + + * TAO_IDL/Makefile: + * TAO_IDL/be/be_sequence.cpp: + * TAO_IDL/be/be_visitor_sequence.cpp: + * TAO_IDL/be/be_visitor_field/field_ch.cpp: + * TAO_IDL/be/be_visitor_interface/any_op_cs.cpp: + * TAO_IDL/be/be_visitor_sequence/elemtype.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_object_manager_ch.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_object_manager_ci.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp: + * TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp: + * TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp: + * TAO_IDL/be/be_visitor_union_branch/private_ch.cpp: + * TAO_IDL/be/be_visitor_union_branch/public_access_cs.cpp: + * TAO_IDL/be/be_visitor_union_branch/public_assign_cs.cpp: + * TAO_IDL/be/be_visitor_union_branch/public_ci.cpp: + * TAO_IDL/be_include/be_sequence.h: + * TAO_IDL/be_include/be_visitor_sequence/sequence_ch.h: + * TAO_IDL/be_include/be_visitor_sequence/sequence_ci.h: + The IDL compiler generates proper code with two arguments now. + + * tests/Param_Test/tmplinst.cpp: + Fixed template instantiations + + * examples/Simple/bank/run_test.pl: + * orbsvcs/tests/Property/run_test.pl: + Fixed output and fine tune execution time. Wed Jul 07 13:07:09 1999 David L. Levine <levine@cs.wustl.edu> diff --git a/TAO/tao/Exception.cpp b/TAO/tao/Exception.cpp index 8e1f7708d83..e586cd5a534 100644 --- a/TAO/tao/Exception.cpp +++ b/TAO/tao/Exception.cpp @@ -277,8 +277,21 @@ CORBA_SystemException::_tao_errno (int errno_value) return TAO_EPERM_MINOR_CODE; case EAFNOSUPPORT: return TAO_EAFNOSUPPORT_MINOR_CODE; + case EAGAIN: + return TAO_EAGAIN_MINOR_CODE; + case ENOMEM: + return TAO_ENOMEM_MINOR_CODE; + case EACCES: + return TAO_EACCES_MINOR_CODE; + case EFAULT: + return TAO_EFAULT_MINOR_CODE; + case EBUSY: + return TAO_EBUSY_MINOR_CODE; + case EEXIST: + return TAO_EEXIST_MINOR_CODE; default: - return TAO_UNKNOWN_MINOR_CODE; + // Mask off bottom 7 bits and return them. + return errno_value & 0x7F; } } @@ -319,7 +332,7 @@ CORBA_SystemException::_info (void) const if (VMCID == TAO_DEFAULT_MINOR_CODE) { const char *location; - switch (this->minor () & 0x00000FF0u) + switch (this->minor () & 0x00000F80u) { case TAO_INVOCATION_CONNECT_MINOR_CODE: location = "invocation connect failed"; @@ -365,7 +378,8 @@ CORBA_SystemException::_info (void) const } const char *errno_indication; - switch (this->minor () & 0x0000000Fu) + char unknown_errno [32]; + switch (this->minor () & 0x7FU) { case TAO_UNSPECIFIED_MINOR_CODE: errno_indication = "unspecified errno"; @@ -400,8 +414,33 @@ CORBA_SystemException::_info (void) const case TAO_EAFNOSUPPORT_MINOR_CODE: errno_indication = "EAFNOSUPPORT"; break; + case TAO_EAGAIN_MINOR_CODE: + errno_indication = "EAGAIN"; + break; + case TAO_ENOMEM_MINOR_CODE: + errno_indication = "ENOMEM"; + break; + case TAO_EACCES_MINOR_CODE: + errno_indication = "EACCES"; + break; + case TAO_EFAULT_MINOR_CODE: + errno_indication = "EFAULT"; + break; + case TAO_EBUSY_MINOR_CODE: + errno_indication = "EBUSY"; + break; + case TAO_EEXIST_MINOR_CODE: + errno_indication = "EEXIST"; + break; default: - errno_indication = "unknown errno"; + { + // 7 bits of some other errno. + ACE_OS::sprintf (unknown_errno, + "low 7 bits of errno: %3u", + this->minor () & 0x7FU); + + errno_indication = unknown_errno; + } } char buffer[BUFSIZ]; diff --git a/TAO/tao/corbafwd.h b/TAO/tao/corbafwd.h index 29d3fb43235..11279f676c8 100644 --- a/TAO/tao/corbafwd.h +++ b/TAO/tao/corbafwd.h @@ -953,27 +953,28 @@ TAO_NAMESPACE CORBA #define TAO_DEFAULT_MINOR_CODE 0x54410000 #define TAO_MAX_MINOR_CODE 0x54410FFF -// Minor code encoding. Encode the location in 8 bits, and the errno -// in 4 bits: -// 0x 0101 0100 0100 0001 0000 ____ ____ ____ -// T A 0 location errno - -// Location encoding: 8 bits, after the errno encoding. -#define TAO_INVOCATION_CONNECT_MINOR_CODE (0x01U << 4) -#define TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE (0x02U << 4) -#define TAO_INVOCATION_SEND_REQUEST_MINOR_CODE (0x03U << 4) -#define TAO_POA_DISCARDING (0x04U << 4) -#define TAO_POA_HOLDING (0x05U << 4) -#define TAO_UNHANDLED_SERVER_CXX_EXCEPTION (0x06U << 4) -#define TAO_INVOCATION_RECV_REQUEST_MINOR_CODE (0x07U << 4) -#define TAO_CONNECTOR_REGISTRY_NO_USABLE_PROTOCOL (0x08U << 4) -#define TAO_NULL_POINTER_MINOR_CODE (0x09U << 4) -#define TAO_MPROFILE_CREATION_ERROR (0x0AU << 4) -#define TAO_TIMEOUT_CONNECT_MINOR_CODE (0x0BU << 4) -#define TAO_TIMEOUT_SEND_MINOR_CODE (0x0CU << 4) -#define TAO_TIMEOUT_RECV_MINOR_CODE (0x0DU << 4) - -// errno encoding: bottom 4 bits. +// Minor code encoding. Encode the location in 5 bits, and the errno +// in 7 bits: +// 0x 0101 0100 0100 0001 0000 ____ _ ___ ____ +// T A 0 location errno + +// Location encoding: 5 bits, after the errno encoding. +#define TAO_INVOCATION_CONNECT_MINOR_CODE (0x01U << 7) +#define TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE (0x02U << 7) +#define TAO_INVOCATION_SEND_REQUEST_MINOR_CODE (0x03U << 7) +#define TAO_POA_DISCARDING (0x04U << 7) +#define TAO_POA_HOLDING (0x05U << 7) +#define TAO_UNHANDLED_SERVER_CXX_EXCEPTION (0x06U << 7) +#define TAO_INVOCATION_RECV_REQUEST_MINOR_CODE (0x07U << 7) +#define TAO_CONNECTOR_REGISTRY_NO_USABLE_PROTOCOL (0x08U << 7) +#define TAO_NULL_POINTER_MINOR_CODE (0x09U << 7) +#define TAO_MPROFILE_CREATION_ERROR (0x0AU << 7) +#define TAO_TIMEOUT_CONNECT_MINOR_CODE (0x0BU << 7) +#define TAO_TIMEOUT_SEND_MINOR_CODE (0x0CU << 7) +#define TAO_TIMEOUT_RECV_MINOR_CODE (0x0DU << 7) +// *Don't* use TAO_<location>_MINOR_CODE greater than 0x1FU! + +// errno encoding: bottom 7 bits. #define TAO_UNSPECIFIED_MINOR_CODE 0x0U #define TAO_ETIMEDOUT_MINOR_CODE 0x1U #define TAO_ENFILE_MINOR_CODE 0x2U @@ -985,7 +986,13 @@ TAO_NAMESPACE CORBA #define TAO_ENOSYS_MINOR_CODE 0x8U #define TAO_EPERM_MINOR_CODE 0x9U #define TAO_EAFNOSUPPORT_MINOR_CODE 0xAU -#define TAO_UNKNOWN_MINOR_CODE 0xFU +#define TAO_EAGAIN_MINOR_CODE 0xBU +#define TAO_ENOMEM_MINOR_CODE 0xCU +#define TAO_EACCES_MINOR_CODE 0xDU +#define TAO_EFAULT_MINOR_CODE 0xEU +#define TAO_EBUSY_MINOR_CODE 0xFU +#define TAO_EEXIST_MINOR_CODE 0x10U +// *Don't* use TAO_<errno>_MINOR_CODE greater than 0x7FU! // These numbers are assigned by the OpenGroup, a database is // available at |