summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-07 21:29:03 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-07 21:29:03 +0000
commit71a21d1d409869e57bd2cc2e4ad6dba333f3b7b2 (patch)
treead9aa1d6949bfffc4c2ee287a351271ebc275471
parent5a2e0d4a4d171f5337b1fce257bce3d22e086d57 (diff)
downloadATCD-71a21d1d409869e57bd2cc2e4ad6dba333f3b7b2.tar.gz
ChangeLogTag: Wed Jul 07 16:25:05 1999 David L. Levine <levine@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-99c194
-rw-r--r--TAO/tao/Exception.cpp47
-rw-r--r--TAO/tao/corbafwd.h51
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