aboutsummaryrefslogtreecommitdiffstats
path: root/lib/orber/src/orber_exceptions.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/orber/src/orber_exceptions.erl')
-rw-r--r--lib/orber/src/orber_exceptions.erl717
1 files changed, 717 insertions, 0 deletions
diff --git a/lib/orber/src/orber_exceptions.erl b/lib/orber/src/orber_exceptions.erl
new file mode 100644
index 0000000000..9ee6e31aeb
--- /dev/null
+++ b/lib/orber/src/orber_exceptions.erl
@@ -0,0 +1,717 @@
+%%--------------------------------------------------------------------
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2002-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+%%
+%%-----------------------------------------------------------------
+%% File: orber_exceptions.erl
+%%
+%% Description:
+%%
+%%-----------------------------------------------------------------
+
+-module(orber_exceptions).
+
+-include_lib("orber/include/corba.hrl").
+-include_lib("orber/src/orber_iiop.hrl").
+-include_lib("orber/src/ifr_objects.hrl").
+-include_lib("orber/include/ifr_types.hrl").
+
+%%-----------------------------------------------------------------
+%% External exports
+%%-----------------------------------------------------------------
+-export([dissect/1,
+ get_def/1,
+ get_name/2,
+ type/1,
+ is_system_exception/1]).
+
+%%-----------------------------------------------------------------
+%% Internal exports
+%%-----------------------------------------------------------------
+-export(['UNKNOWN'/1,
+ 'BAD_PARAM'/1,
+ 'NO_MEMORY'/1,
+ 'IMP_LIMIT'/1,
+ 'COMM_FAILURE'/1,
+ 'INV_OBJREF'/1,
+ 'NO_PERMISSION'/1,
+ 'INTERNAL'/1,
+ 'MARSHAL'/1,
+ 'INITIALIZE'/1,
+ 'NO_IMPLEMENT'/1,
+ 'BAD_TYPECODE'/1,
+ 'BAD_OPERATION'/1,
+ 'NO_RESOURCES'/1,
+ 'NO_RESPONSE'/1,
+ 'PERSIST_STORE'/1,
+ 'BAD_INV_ORDER'/1,
+ 'TRANSIENT'/1,
+ 'FREE_MEM'/1,
+ 'INV_IDENT'/1,
+ 'INV_FLAG'/1,
+ 'INTF_REPOS'/1,
+ 'BAD_CONTEXT'/1,
+ 'OBJ_ADAPTER'/1,
+ 'DATA_CONVERSION'/1,
+ 'OBJECT_NOT_EXIST'/1,
+ 'TRANSACTION_REQUIRED'/1,
+ 'TRANSACTION_ROLLEDBACK'/1,
+ 'INVALID_TRANSACTION'/1,
+ 'INV_POLICY'/1,
+ 'CODESET_INCOMPATIBLE'/1,
+ 'REBIND'/1,
+ 'TIMEOUT'/1,
+ 'TRANSACTION_UNAVAILABLE'/1,
+ 'TRANSACTION_MODE'/1,
+ 'BAD_QOS'/1]).
+
+
+-define(DEBUG_LEVEL, 5).
+
+%%-----------------------------------------------------------------
+%% Function : is_system_exception
+%% Arguments : Exception - record()
+%% Returns : true | false
+%% Raises :
+%% Description: Check if CORBA system exception or user defined
+%%-----------------------------------------------------------------
+is_system_exception({'EXCEPTION', E}) ->
+ is_system_exception(E);
+is_system_exception(E) when is_tuple(E) ->
+ ?SYSTEM_EXCEPTION == type(element(1, E));
+is_system_exception(_E) ->
+ corba:raise(#'BAD_PARAM'{completion_status=?COMPLETED_NO}).
+
+%%-----------------------------------------------------------------
+%% Function : type
+%% Arguments : ExceptionName - atom()
+%% Returns : ?SYSTEM_EXCEPTION | ?USER_EXCEPTION
+%% Raises :
+%% Description: Check if CORBA system exception or user defined
+%%-----------------------------------------------------------------
+type('UNKNOWN') -> ?SYSTEM_EXCEPTION;
+type('BAD_PARAM') -> ?SYSTEM_EXCEPTION;
+type('NO_MEMORY') -> ?SYSTEM_EXCEPTION;
+type('IMP_LIMIT') -> ?SYSTEM_EXCEPTION;
+type('COMM_FAILURE') -> ?SYSTEM_EXCEPTION;
+type('INV_OBJREF') -> ?SYSTEM_EXCEPTION;
+type('NO_PERMISSION') -> ?SYSTEM_EXCEPTION;
+type('INTERNAL') -> ?SYSTEM_EXCEPTION;
+type('MARSHAL') -> ?SYSTEM_EXCEPTION;
+type('INITIALIZE') -> ?SYSTEM_EXCEPTION;
+type('NO_IMPLEMENT') -> ?SYSTEM_EXCEPTION;
+type('BAD_TYPECODE') -> ?SYSTEM_EXCEPTION;
+type('BAD_OPERATION') -> ?SYSTEM_EXCEPTION;
+type('NO_RESOURCES') -> ?SYSTEM_EXCEPTION;
+type('NO_RESPONSE') -> ?SYSTEM_EXCEPTION;
+type('PERSIST_STORE') -> ?SYSTEM_EXCEPTION;
+type('BAD_INV_ORDER') -> ?SYSTEM_EXCEPTION;
+type('TRANSIENT') -> ?SYSTEM_EXCEPTION;
+type('FREE_MEM') -> ?SYSTEM_EXCEPTION;
+type('INV_IDENT') -> ?SYSTEM_EXCEPTION;
+type('INV_FLAG') -> ?SYSTEM_EXCEPTION;
+type('INTF_REPOS') -> ?SYSTEM_EXCEPTION;
+type('BAD_CONTEXT') -> ?SYSTEM_EXCEPTION;
+type('OBJ_ADAPTER') -> ?SYSTEM_EXCEPTION;
+type('DATA_CONVERSION') -> ?SYSTEM_EXCEPTION;
+type('OBJECT_NOT_EXIST') -> ?SYSTEM_EXCEPTION;
+type('TRANSACTION_REQUIRED') -> ?SYSTEM_EXCEPTION;
+type('TRANSACTION_ROLLEDBACK') -> ?SYSTEM_EXCEPTION;
+type('INVALID_TRANSACTION') -> ?SYSTEM_EXCEPTION;
+type('INV_POLICY') -> ?SYSTEM_EXCEPTION;
+type('CODESET_INCOMPATIBLE') -> ?SYSTEM_EXCEPTION;
+type('REBIND') -> ?SYSTEM_EXCEPTION;
+type('TIMEOUT') -> ?SYSTEM_EXCEPTION;
+type('TRANSACTION_UNAVAILABLE') -> ?SYSTEM_EXCEPTION;
+type('TRANSACTION_MODE') -> ?SYSTEM_EXCEPTION;
+type('BAD_QOS') -> ?SYSTEM_EXCEPTION;
+type(_) -> ?USER_EXCEPTION.
+
+%%-----------------------------------------------------------------
+%% Function : get_def
+%% Arguments : Exception - record()
+%% Returns : {Type, TypeCode, Exc}
+%% Raises :
+%% Description: Returns the TC for the supplied exception
+%%-----------------------------------------------------------------
+get_def(Exception) ->
+ [Exc, TypeId | _] = tuple_to_list(Exception),
+ case type(Exc) of
+ ?SYSTEM_EXCEPTION ->
+ {?SYSTEM_EXCEPTION, get_system_exception_def(Exc), Exception};
+ ?USER_EXCEPTION ->
+ case orber:light_ifr() of
+ true ->
+ case catch orber_ifr:get_tc(TypeId, ?IFR_ExceptionDef) of
+ {'EXCEPTION', NewExc} ->
+ {?SYSTEM_EXCEPTION,
+ get_system_exception_def(NewExc),
+ NewExc};
+ TC ->
+ {?USER_EXCEPTION, TC, Exception}
+ end;
+ false ->
+ case mnesia:dirty_index_read(ir_ExceptionDef, TypeId,
+ #ir_ExceptionDef.id) of
+ [ExcDef] when is_record(ExcDef, ir_ExceptionDef) ->
+ {?USER_EXCEPTION,
+ ExcDef#ir_ExceptionDef.type,
+ Exception};
+ Other ->
+ orber:dbg("[~p] ~p:get_user_exception_type(~p).~n"
+ "IFR Id not found: ~p",
+ [?LINE, ?MODULE, TypeId, Other], ?DEBUG_LEVEL),
+ NewExc = #'UNKNOWN'{minor=(?CORBA_OMGVMCID bor 1),
+ completion_status=?COMPLETED_MAYBE},
+ {?SYSTEM_EXCEPTION,
+ get_system_exception_def(NewExc),
+ NewExc}
+ end
+ end
+ end.
+
+%%-----------------------------------------------------------------
+%% Function : get_name
+%% Arguments : TypeId - string()
+%% Type - ?SYSTEM_EXCEPTION ( | ?USER_EXCEPTION)
+%% Returns : ExceptionName - atom()
+%% Raises : #'UNKNOWN'{}
+%% Description: Extract exception name
+%%-----------------------------------------------------------------
+get_name(TypeId, ?SYSTEM_EXCEPTION) ->
+ ExcName =
+ case string:tokens(TypeId, ":/") of
+ [_IDL, _OMGORG, _CORBA, Name, _Version] when is_list(Name) ->
+ list_to_atom(Name);
+ [_IDL, _CORBA, Name, _Version] when is_list(Name) ->
+ %% We should remove this case but we keep it for now due to backward
+ %% compatible reasons.
+ list_to_atom(Name);
+ Other ->
+ %% The CORBA-spec states that this exception should be raised if
+ %% it's a system exception we do not support.
+ orber:dbg("[~p] ~p:get_system_exception_name(~p).~n"
+ "Unknown System Exception: ~p",
+ [?LINE, ?MODULE, TypeId, Other], ?DEBUG_LEVEL),
+ corba:raise(#'UNKNOWN'{minor=(?CORBA_OMGVMCID bor 2),
+ completion_status=?COMPLETED_MAYBE})
+ end,
+ case type(ExcName) of
+ ?SYSTEM_EXCEPTION ->
+ ExcName;
+ What ->
+ orber:dbg("[~p] ~p:get_system_exception_name(~p).~n"
+ "Unknown System Exception: ~p",
+ [?LINE, ?MODULE, TypeId, What], ?DEBUG_LEVEL),
+ corba:raise(#'UNKNOWN'{minor=(?CORBA_OMGVMCID bor 2),
+ completion_status=?COMPLETED_MAYBE})
+ end.
+
+
+%%-----------------------------------------------------------------
+%% Generate system exception TypeCode
+%%-----------------------------------------------------------------
+get_system_exception_def(ExcName) when is_atom(ExcName) ->
+ Name = atom_to_list(ExcName),
+ {'tk_except', "IDL:omg.org/CORBA/" ++ Name ++ ":1.0", Name,
+ [{"minor",'tk_ulong'},
+ {"completed",
+ {'tk_enum', "", "completion_status",
+ ["COMPLETED_YES", "COMPLETED_NO",
+ "COMPLETED_MAYBE"]}}]};
+get_system_exception_def(Exc) ->
+ get_system_exception_def(element(1, Exc)).
+
+
+%%-----------------------------------------------------------------
+%% Mapping minor codes to a printable string.
+%%-----------------------------------------------------------------
+dissect({'EXCEPTION', Exc}) ->
+ dissect(Exc);
+dissect(Exception) when is_tuple(Exception) ->
+ [Exc, TypeId | _] = tuple_to_list(Exception),
+ case type(Exc) of
+ ?USER_EXCEPTION ->
+ {ok, lists:flatten(io_lib:format("~n------------- EXCEPTION INFO --------------
+User Defined Exception.: ~p
+IFR Id.................: ~s
+-------------------------------------------~n", [Exc, TypeId]))};
+ ?SYSTEM_EXCEPTION ->
+ case map_exc(Exception) of
+ {ok, String} ->
+ {ok, lists:flatten(String)};
+ {error, Reason} ->
+ {error, Reason}
+ end
+ end;
+dissect(_What) ->
+ {error, "Not a correct exception supplied to orber_exceptions:dissect/1"}.
+
+map_exc({Name, _, Minor, Status}) when is_integer(Minor) ->
+ case lookup_vendor(Minor) of
+ {true, Vendor, VMCID} ->
+ case catch ?MODULE:Name(Minor) of
+ MinorInfo when is_list(MinorInfo) ->
+ {ok, io_lib:format("~n------------- EXCEPTION INFO --------------
+Vendor.....: ~s
+VMCID......: ~s
+Exception..: ~p
+Status.....: ~p
+Minor Code.: ~p
+Info.......: ~s
+-------------------------------------------~n",
+ [Vendor, VMCID, Name, Status, (Minor band 16#fff), MinorInfo])};
+ _ ->
+ {ok, io_lib:format("~n------------- EXCEPTION INFO --------------
+Vendor.....: ~s
+VMCID......: ~s
+Exception..: ~p
+Status.....: ~p
+Minor Code.: ~p
+Info.......: -
+------------------------------------~n", [Vendor, VMCID, Name, Status, (Minor band 16#fff)])}
+ end;
+ {false, Vendor, VMCID} ->
+ {ok, io_lib:format("~n------------- EXCEPTION INFO --------------
+Vendor.....: ~s
+VMCID......: ~s
+Exception..: ~p
+Status.....: ~p
+Minor Code.: ~p
+Info.......: -
+-------------------------------------------~n", [Vendor, VMCID, Name, Status, (Minor band 16#fff)])}
+ end;
+map_exc(_) ->
+ {error, "Not a correct exception supplied to orber_exceptions:map_exc/1"}.
+
+lookup_vendor(Minor) when (?ORBER_VMCID bxor Minor) < 16#0fff ->
+ {true, "Orber", "0x45520000"};
+lookup_vendor(Minor) when (?CORBA_OMGVMCID bxor Minor) < 16#0fff ->
+ {true, "OMG", "0x4f4d0000"};
+lookup_vendor(Minor) when (?IONA_VMCID_1 bxor Minor) < 16#0fff ->
+ {false, "IONA", "0x4f4f0000"};
+lookup_vendor(Minor) when (?IONA_VMCID_2 bxor Minor) < 16#0fff ->
+ {false, "IONA", "0x49540000"};
+lookup_vendor(Minor) when (?SUN_VMCID bxor Minor) < 16#0fff ->
+ {false, "SUN", "0x53550000"};
+lookup_vendor(Minor) when (?BORLAND_VMCID bxor Minor) < 16#0fff ->
+ {false, "Borland", "0x56420000"};
+lookup_vendor(Minor) when (?TAO_VMCID bxor Minor) < 16#0fff ->
+ {false, "TAO", "0x54410000"};
+lookup_vendor(Minor) when (?PRISMTECH_VMCID bxor Minor) < 16#0fff ->
+ {false, "PrismTech", "0x50540000"};
+lookup_vendor(Minor) when is_integer(Minor), Minor =< ?ULONGMAX ->
+ {false, "undefined", extract_VMCID(Minor)};
+lookup_vendor(Minor) when is_integer(Minor), Minor =< ?ULONGMAX ->
+ {false, "Unknown", "Unable to extract it"}.
+
+extract_VMCID(Int) ->
+ int_to_hex_str(3, ((Int bsr 8) band 16#fffff0), ["00"]).
+
+int_to_hex_str(0, _, Acc) ->
+ lists:flatten(["0x" | Acc]);
+int_to_hex_str(N, Int, Acc) ->
+ int_to_hex_str(N-1, (Int bsr 8), [int_to_hex((16#ff band Int))|Acc]).
+
+int_to_hex(B) when B < 256, B >= 0 ->
+ N1 = B div 16,
+ N2 = B rem 16,
+ [code_character(N1),
+ code_character(N2)].
+code_character(N) when N < 10 ->
+ $0 + N;
+code_character(N) ->
+ $a + (N - 10).
+
+
+%% The following functions all maps to a system exception.
+%% UNKNOWN - OMG
+'UNKNOWN'(?CORBA_OMGVMCID bor 1) -> "Unlisted user exception received
+by client";
+'UNKNOWN'(?CORBA_OMGVMCID bor 2) -> "Non-standard System Exception
+not supported";
+%% UNKNOWN - Orber
+'UNKNOWN'(?ORBER_VMCID bor 1) -> "Missing beam-file. Unable to extract TC.";
+'UNKNOWN'(_) -> "-".
+
+
+%% BAD_PARAM - OMG
+'BAD_PARAM'(?CORBA_OMGVMCID bor 1) -> "Failure to register, unregister, or
+lookup value factory";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 2) -> "RID already defined in IFR";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 3) -> "Name already used in the context in IFR";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 4) -> "Target is not a valid container";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 5) -> "Name clash in inherited context";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 6) -> "Incorrect type for abstract interface";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 7) -> "string_to_object conversion failed
+due to bad scheme name";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 8) -> "string_to_object conversion failed
+due to bad address";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 9) -> "string_to_object conversion failed
+due to bad bad schema specific part";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 10) -> "string_to_object conversion failed
+due to non specific reason";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 11) -> "Attempt to derive abstract interface
+from non-abstract base interface
+in the Interface Repository";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 12) -> "Attempt to let a ValueDef support
+more than one non-abstract interface
+in the Interface Repository";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 13) -> "Attempt to use an incomplete
+TypeCode as a parameter";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 14) -> "Invalid object id passed to
+POA::create_reference_by_id";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 15) -> "Bad name argument in TypeCode operation";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 16) -> "Bad RepositoryId argument in TypeCode
+operation";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 17) -> "Invalid member name in TypeCode operation";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 18) -> "Duplicate label value in create_union_tc";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 19) -> "Incompatible TypeCode of label and
+discriminator in create_union_tc";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 20) -> "Supplied discriminator type illegitimate
+in create_union_tc";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 21) -> "Any passed to ServerRequest::set_exception
+does not contain an exception";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 22) -> "Unlisted user exception passed to
+ServerRequest::set_exception";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 23) -> "wchar transmission code set not
+in service context";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 24) -> "Service context is not in OMG-defined range";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 25) -> "Enum value out of range";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 26) -> "Invalid service context Id in portable
+interceptor";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 27) -> "Attempt to call register_initial_reference
+with a null Object";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 28) -> "Invalid component Id in
+portable interceptor";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 29) -> "Invalid profile Id in portable
+interceptor";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 30) -> "Two or more Policy objects with the
+same PolicyType value supplied to
+Object::set_policy_overrides or
+PolicyManager::set_policy_overrides";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 31) -> "Attempt to define a oneway
+operation with non-void result,
+out or inout parameters or user
+exceptions";
+'BAD_PARAM'(?CORBA_OMGVMCID bor 32) -> "DII asked to create request
+for an implicit operation";
+%% BAD_PARAM - Orber
+'BAD_PARAM'(?ORBER_VMCID bor 1) -> "Bad return value from the objects
+init-function (create phase) or invalid
+options suuplied";
+'BAD_PARAM'(_) -> "-".
+
+%% NO_MEMORY - OMG
+'NO_MEMORY'(_) -> "-".
+
+%% IMP_LIMIT - OMG
+'IMP_LIMIT'(?CORBA_OMGVMCID bor 1) -> "Unable to use any profile in IOR";
+%% IMP_LIMIT - Orber
+'IMP_LIMIT'(?ORBER_VMCID bor 1) -> "All ports assigned to the configuration
+parameter 'iiop_out_ports' are in use";
+'IMP_LIMIT'(_) -> "-".
+
+%% COMM_FAILURE - OMG
+%% COMM_FAILURE - Orber
+'COMM_FAILURE'(?ORBER_VMCID bor 1) -> "Unable to connect to another ORB -
+probably inactive";
+'COMM_FAILURE'(?ORBER_VMCID bor 2) -> "Unable to connect to another ORB -
+interceptor(s) rejected it or behaves
+badly";
+'COMM_FAILURE'(?ORBER_VMCID bor 3) -> "Request terminated by another process";
+'COMM_FAILURE'(?ORBER_VMCID bor 4) -> "Unable to connect to another ORB - timed out";
+'COMM_FAILURE'(_) -> "-".
+
+%% INV_OBJREF - OMG
+'INV_OBJREF'(?CORBA_OMGVMCID bor 1) -> "wchar Code Set support not specified";
+'INV_OBJREF'(?CORBA_OMGVMCID bor 2) -> "Codeset component required for type using wchar or wstring data";
+'INV_OBJREF'(_) -> "-".
+
+%% NO_PERMISSION - OMG
+'NO_PERMISSION'(_) -> "-".
+
+%% INTERNAL - OMG
+%% INTERNAL - Orber
+'INTERNAL'(?ORBER_VMCID bor 1) -> "Unable to connect to an Orber installation";
+'INTERNAL'(?ORBER_VMCID bor 2) -> "Failed to register internal objectkey in the database";
+'INTERNAL'(_) -> "-".
+
+%% MARSHAL - OMG
+'MARSHAL'(?CORBA_OMGVMCID bor 1) -> "Unable to locate value factory";
+'MARSHAL'(?CORBA_OMGVMCID bor 2) -> "ServerRequest::set_result called
+before ServerRequest::ctx when the
+operation IDL contains a context
+clause";
+'MARSHAL'(?CORBA_OMGVMCID bor 3) -> "NVList passed to
+ServerRequest::arguments does not
+describe all parameters passed
+by client";
+'MARSHAL'(?CORBA_OMGVMCID bor 4) -> "Attempt to marshal Local object";
+'MARSHAL'(?CORBA_OMGVMCID bor 5) -> "wchar or wstring data erroneosly
+sent by client over GIOP 1.0
+connection";
+'MARSHAL'(?CORBA_OMGVMCID bor 6) -> "wchar or wstring data erroneously
+returned by server over GIOP 1.0
+connection";
+%% MARSHAL - Orber
+'MARSHAL'(?ORBER_VMCID bor 1) -> "Integer overflow";
+'MARSHAL'(?ORBER_VMCID bor 2) -> "Passed a non-integer,
+when it must be an integer";
+'MARSHAL'(?ORBER_VMCID bor 3) -> "Incorrect boolean";
+'MARSHAL'(?ORBER_VMCID bor 4) -> "Passed a non-number,
+when it must be a float, double
+or long double";
+'MARSHAL'(?ORBER_VMCID bor 5) -> "Bad enumerant - does not exist";
+'MARSHAL'(?ORBER_VMCID bor 6) -> "Passed something else but character
+or octet";
+'MARSHAL'(?ORBER_VMCID bor 7) -> "Unable to marshal the supplied
+typecode";
+'MARSHAL'(?ORBER_VMCID bor 8) -> "Unable to un-marshal the supplied
+typecode";
+'MARSHAL'(?ORBER_VMCID bor 9) -> "Union IFR-id does not exist";
+'MARSHAL'(?ORBER_VMCID bor 10) -> "Struct IFR-id does not exist";
+'MARSHAL'(?ORBER_VMCID bor 11) -> "Empty string supplied as IFR-id";
+'MARSHAL'(?ORBER_VMCID bor 12) -> "Unable to decode target address";
+'MARSHAL'(?ORBER_VMCID bor 13) -> "Incorrect TypeCode or unsupported
+data type";
+'MARSHAL'(?ORBER_VMCID bor 14) -> "The Fixed type does not match the
+defined digits/scale parameters";
+'MARSHAL'(?ORBER_VMCID bor 15) -> "The supplied array is to long or to short";
+'MARSHAL'(?ORBER_VMCID bor 16) -> "String/Wstring exceeds maximum length";
+'MARSHAL'(?ORBER_VMCID bor 17) -> "To few or to many parameters supplied";
+'MARSHAL'(?ORBER_VMCID bor 18) -> "Unable to decode message header";
+'MARSHAL'(?ORBER_VMCID bor 19) -> "Sequnce exceeds maximum length";
+'MARSHAL'(_) -> "-".
+
+%% INITIALIZE - OMG
+'INITIALIZE'(_) -> "-".
+
+%% NO_IMPLEMENT - OMG
+'NO_IMPLEMENT'(?CORBA_OMGVMCID bor 1) -> "Missing local value implementation";
+'NO_IMPLEMENT'(?CORBA_OMGVMCID bor 2) -> "Incompatible value implementation version";
+'NO_IMPLEMENT'(?CORBA_OMGVMCID bor 3) -> "Unable to use any profile in IOR";
+'NO_IMPLEMENT'(?CORBA_OMGVMCID bor 4) -> "Attempt to use DII on Local object";
+'NO_IMPLEMENT'(_) -> "-".
+
+
+%% BAD_TYPECODE - OMG
+'BAD_TYPECODE'(?CORBA_OMGVMCID bor 1) -> "Attempt to marshal incomplete
+TypeCode";
+'BAD_TYPECODE'(?CORBA_OMGVMCID bor 2) -> "Member type code illegitimate
+in TypeCode operation";
+'BAD_TYPECODE'(_) -> "-".
+
+%% BAD_OPERATION - OMG
+'BAD_OPERATION'(?CORBA_OMGVMCID bor 1) -> "ServantManager returned wrong
+servant type";
+%% BAD_OPERATION - Orber
+'BAD_OPERATION'(?ORBER_VMCID bor 1) -> "Incorrect instance type for this
+operation";
+'BAD_OPERATION'(?ORBER_VMCID bor 2) -> "Incorrect instance type for this
+operation (one-way)";
+'BAD_OPERATION'(?ORBER_VMCID bor 3) -> "The IC option 'handle_info' was
+not used when compiling the stub";
+'BAD_OPERATION'(?ORBER_VMCID bor 4) -> "Incorrect instance type for the
+invoked operation (two- or one-way)";
+'BAD_OPERATION'(_) -> "-".
+
+%% NO_RESOURCES - OMG
+'NO_RESOURCES'(?CORBA_OMGVMCID bor 1) -> "Portable Interceptor operation
+not supported in this binding";
+'NO_RESOURCES'(_) -> "-".
+
+%% NO_RESPONSE - OMG
+'NO_RESPONSE'(_) -> "-".
+
+%% PERSIST_STORE - OMG
+'PERSIST_STORE'(_) -> "-".
+
+%% BAD_INV_ORDER - OMG
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 1) -> "Dependency exists in IFR preventing
+destruction of this object";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 2) -> "Attempt to destroy indestructible
+objects in IFR";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 3) -> "Operation would deadlock";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 4) -> "ORB has shutdown";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 5) -> "Attempt to invoke send or invoke
+operation of the same Request object
+more than once";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 6) -> "Attempt to set a servant manager
+after one has already been set";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 7) -> "ServerRequest::arguments called more
+than once or after a call to
+ServerRequest:: set_exception";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 8) -> "ServerRequest::ctx called more than
+once or before ServerRequest::arguments or
+after ServerRequest::ctx, ServerRequest::set_result
+or ServerRequest::set_exception";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 9) -> "ServerRequest::set_result called more
+than once or before ServerRequest::arguments
+or after ServerRequest::set_result or
+ServerRequest::set_exception";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 10) -> "Attempt to send a DII request after
+it was sent previously";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 11) -> "Attempt to poll a DII request or to
+retrieve its result before the request
+was sent";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 12) -> "Attempt to poll a DII request or to
+retrieve its result after the result
+was retrieved previously";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 13) -> "Attempt to poll a synchronous DII
+request or to retrieve results from
+a synchronous DII request";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 14) -> "Invalid portable interceptor call";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 15) -> "Service context add failed in portable
+interceptor because a service context
+with the given id already exists";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 16) -> "Registration of PolicyFactory failed
+because a factory already exists for
+the given PolicyType";
+'BAD_INV_ORDER'(?CORBA_OMGVMCID bor 17) -> "POA cannot create POAs while undergoing
+destruction";
+'BAD_INV_ORDER'(_) -> "-".
+
+%% TRANSIENT - OMG
+'TRANSIENT'(?CORBA_OMGVMCID bor 1) -> "Request discarded because of resource
+exhaustion in POA, or because POA
+is in discarding state";
+'TRANSIENT'(?CORBA_OMGVMCID bor 2) -> "No usable profile in IOR";
+'TRANSIENT'(?CORBA_OMGVMCID bor 3) -> "Request cancelled";
+'TRANSIENT'(?CORBA_OMGVMCID bor 4) -> "POA destroyed";
+%% TRANSIENT - Orber
+'TRANSIENT'(?ORBER_VMCID bor 1) -> "Orber is being restarted, or should be,
+on one node in the multi-node Orber
+installation";
+'TRANSIENT'(?ORBER_VMCID bor 2) -> "The node the target object resides on
+is down (multi-node Orber installation)";
+'TRANSIENT'(?ORBER_VMCID bor 3) -> "Received EXIT when invoking an operation
+on an object residing on another
+node in a multi-node Orber installation";
+'TRANSIENT'(?ORBER_VMCID bor 4) -> "Received EXIT when invoking an operation
+on a local object";
+'TRANSIENT'(?ORBER_VMCID bor 5) -> "Received unknown reply when invoking an
+operation on an object residing on
+another node in a multi-node Orber
+installation";
+'TRANSIENT'(?ORBER_VMCID bor 6) -> "Received unknown reply when invoking an
+operation on a local object";
+'TRANSIENT'(?ORBER_VMCID bor 7) -> "Either the stub/skeleton does not exist or an
+incorrect IC-version was used, which does not generate
+the oe_tc/1 or oe_get_interface/1 functions";
+'TRANSIENT'(_) -> "-".
+
+%% FREE_MEM - OMG
+'FREE_MEM'(_) -> "-".
+
+%% INV_IDENT - OMG
+'INV_IDENT'(_) -> "-".
+
+%% INV_FLAG - OMG
+'INV_FLAG'(_) -> "-".
+
+%% INTF_REPOS - OMG
+'INTF_REPOS'(?CORBA_OMGVMCID bor 1) -> "Interface Repository not available";
+'INTF_REPOS'(?CORBA_OMGVMCID bor 2) -> "No entry for requested interface in
+Interface Repository";
+'INTF_REPOS'(_) -> "-".
+
+%% BAD_CONTEXT - OMG
+'BAD_CONTEXT'(_) -> "-".
+
+%% OBJ_ADAPTER - OMG
+'OBJ_ADAPTER'(?CORBA_OMGVMCID bor 1) -> "System exception in
+AdapterActivator::unknown_adapter";
+'OBJ_ADAPTER'(?CORBA_OMGVMCID bor 2) -> "Servant not found [ServantManager]";
+'OBJ_ADAPTER'(?CORBA_OMGVMCID bor 3) -> "No default servant available [POA policy]";
+'OBJ_ADAPTER'(?CORBA_OMGVMCID bor 4) -> "No servant manager available [POA Policy]";
+'OBJ_ADAPTER'(?CORBA_OMGVMCID bor 5) -> "Violation of POA policy by
+ServantActivator::incarnate";
+'OBJ_ADAPTER'(?CORBA_OMGVMCID bor 6) -> "Exception in
+PortableInterceptor::IORInterceptor.components_established";
+%% OBJ_ADAPTER - Orber
+'OBJ_ADAPTER'(?ORBER_VMCID bor 1) -> "Call-back module does not exist";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 2) -> "Missing function or incorrect arity in
+call-back module";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 3) -> "Function exported but arity incorrect";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 4) -> "Unknown error. Call-back module generated
+EXIT";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 5) -> "Call-back module invoked operation on a
+non-existing module";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 6) -> "Missing function or incorrect arity in
+a module invoked via the call-back module";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 7) -> "Function exported but arity incorrect in
+a module invoked via the call-back module";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 8) -> "Call-back module contains a function_clause,
+case_clause or badarith error";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 9) -> "Call-back module invoked operation exported
+by another module which contains a function_clause, case_clause or badarith error";
+'OBJ_ADAPTER'(?ORBER_VMCID bor 10) -> "Unknown EXIT returned by call-back module";
+'OBJ_ADAPTER'(_) -> "-".
+
+%% DATA_CONVERSION - OMG
+'DATA_CONVERSION'(?CORBA_OMGVMCID bor 1) -> "Character does not map to negotiated
+transmission code set";
+'DATA_CONVERSION'(_) -> "-".
+
+%% OBJECT_NOT_EXIST - OMG
+'OBJECT_NOT_EXIST'(?CORBA_OMGVMCID bor 1) -> "Attempt to pass an unactivated
+(unregistered) value as an object reference";
+'OBJECT_NOT_EXIST'(?CORBA_OMGVMCID bor 2) -> "Failed to create or locate Object
+Adapter";
+'OBJECT_NOT_EXIST'(?CORBA_OMGVMCID bor 3) -> "Biomolecular Sequence Analysis
+Service is no longer available";
+'OBJECT_NOT_EXIST'(?CORBA_OMGVMCID bor 4) -> "Object Adapter inactive";
+'OBJECT_NOT_EXIST'(_) -> "-".
+
+%% TRANSACTION_REQUIRED - OMG
+'TRANSACTION_REQUIRED'(_) -> "-".
+
+%% TRANSACTION_ROLLEDBACK - OMG
+'TRANSACTION_ROLLEDBACK'(_) -> "-".
+
+%% INVALID_TRANSACTION - OMG
+'INVALID_TRANSACTION'(_) -> "-".
+
+%% INV_POLICY - OMG
+'INV_POLICY'(?CORBA_OMGVMCID bor 1) -> "Unable to reconcile IOR specified
+policy with effective policy override";
+'INV_POLICY'(?CORBA_OMGVMCID bor 2) -> "Invalid PolicyType";
+'INV_POLICY'(?CORBA_OMGVMCID bor 3) -> "No PolicyFactory has been registered
+for the given PolicyType";
+'INV_POLICY'(_) -> "-".
+
+%% CODESET_INCOMPATIBLE - OMG
+'CODESET_INCOMPATIBLE'(_) -> "-".
+
+%% REBIND - OMG
+'REBIND'(_) -> "-".
+
+%% TIMEOUT - OMG
+'TIMEOUT'(_) -> "-".
+
+%% TRANSACTION_UNAVAILABLE - OMG
+'TRANSACTION_UNAVAILABLE'(_) -> "-".
+
+%% TRANSACTION_MODE - OMG
+'TRANSACTION_MODE'(_) -> "-".
+
+%% BAD_QOS - OMG
+'BAD_QOS'(_) -> "-".
+