diff options
author | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
commit | 84adefa331c4159d432d22840663c38f155cd4c1 (patch) | |
tree | bff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/orber/src/orber_typedefs.erl | |
download | otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2 otp-84adefa331c4159d432d22840663c38f155cd4c1.zip |
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/orber/src/orber_typedefs.erl')
-rw-r--r-- | lib/orber/src/orber_typedefs.erl | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/lib/orber/src/orber_typedefs.erl b/lib/orber/src/orber_typedefs.erl new file mode 100644 index 0000000000..239546961f --- /dev/null +++ b/lib/orber/src/orber_typedefs.erl @@ -0,0 +1,82 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-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_typedefs.erl +%% Description: +%% This file contains some functions for internal typedef checking +%% +%%----------------------------------------------------------------- +-module(orber_typedefs). + +-include("orber_iiop.hrl"). +-include_lib("orber/include/corba.hrl"). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([get_op_def/2]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). + +-define(DEBUG_LEVEL, 5). + +%%----------------------------------------------------------------- +%% External interface functions +%%----------------------------------------------------------------- +%%----------------------------------------------------------------- +%% Func: get_op_def/2 +%% +get_op_def(_Objkey, '_is_a') -> + {orber_tc:boolean(),[orber_tc:string(0)],[]}; +%% First the OMG specified this operation to be '_not_existent' and then +%% changed it to '_non_existent' without suggesting that both must be supported. +%% See CORBA2.3.1 page 15-34, Minor revision 2.3.1: October 1999 +get_op_def(_Objkey, '_not_existent') -> + {orber_tc:boolean(),[],[]}; +get_op_def(_Objkey, '_non_existent') -> + {orber_tc:boolean(),[],[]}; +%% Defined in the Fault Tolerant section of the CORBA specification. +get_op_def(_Objkey, '_FT_HB') -> + {orber_tc:void(),[],[]}; +get_op_def(Objkey, Op) -> + case catch iop_ior:get_key(Objkey) of + {_Local, _Key, _, _, Module} -> + case catch Module:oe_tc(Op) of + {'EXIT', What} -> + orber:dbg("[~p] orber_typedefs:get_op_def(~p);~n" + "The call-back module does not exist or incorrect~n" + "IC-version used. Reason:~n~p", + [?LINE, Module, What], ?DEBUG_LEVEL), + corba:raise(#'TRANSIENT'{minor=(?ORBER_VMCID bor 7), + completion_status=?COMPLETED_NO}); + undefined -> + corba:raise(#'BAD_OPERATION'{minor = (?ORBER_VMCID bor 4), + completion_status=?COMPLETED_NO}); + TC -> + TC + end; + _ -> + corba:raise(#'INV_OBJREF'{completion_status=?COMPLETED_NO}) + end. + |