aboutsummaryrefslogtreecommitdiffstats
path: root/lib/orber/src/corba_boa.erl
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/orber/src/corba_boa.erl
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/orber/src/corba_boa.erl')
-rw-r--r--lib/orber/src/corba_boa.erl134
1 files changed, 134 insertions, 0 deletions
diff --git a/lib/orber/src/corba_boa.erl b/lib/orber/src/corba_boa.erl
new file mode 100644
index 0000000000..52f2aa791c
--- /dev/null
+++ b/lib/orber/src/corba_boa.erl
@@ -0,0 +1,134 @@
+%%--------------------------------------------------------------------
+%%
+%% %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: corba_boa.erl
+%%
+%% Description:
+%% This file contains the CORBA::BOA interface
+%%
+%%-----------------------------------------------------------------
+-module(corba_boa).
+
+-include_lib("orber/include/corba.hrl").
+-include_lib("orber/include/ifr_types.hrl").
+
+%%-----------------------------------------------------------------
+%% External exports
+%%-----------------------------------------------------------------
+-export([%create/3,
+ dispose/1,
+ get_id/1]).
+% change_implementation/2,
+% set_exception/3,
+% impl_is_ready/1,
+% deactivate_impl/1,
+% obj_is_ready/2,
+% deactivate_obj/1,
+% get_principal/2]).
+
+%%-----------------------------------------------------------------
+%% Internal exports
+%%-----------------------------------------------------------------
+-export([]).
+
+%%-----------------------------------------------------------------
+%% Macros
+%%-----------------------------------------------------------------
+-define(DEBUG_LEVEL, 5).
+
+%%-----------------------------------------------------------------
+%% External functions
+%%-----------------------------------------------------------------
+%create(Id, Interface, Implementation) ->
+% corba:create(Implementation#orb_ImplDef.module,
+% Interface#fullinterfacedescription.id).
+
+dispose(Object) ->
+ case binary_to_term(iop_ior:get_privfield(Object)) of
+ undefined ->
+ case catch iop_ior:get_key(Object) of
+ {'internal', Key, _, _, _} ->
+ case orber_objectkeys:get_pid(Key) of
+ {error, Reason} ->
+ orber:dbg("[~p] corba_boa:dispose(~p); object not found(~p)",
+ [?LINE, Object, Reason], ?DEBUG_LEVEL),
+ corba:raise(#'TRANSIENT'{completion_status=?COMPLETED_NO});
+ Pid ->
+ gen_server:call(Pid, stop)
+ end;
+ {'internal_registered', Key, _, _, _} ->
+ case Key of
+ {pseudo, Module} ->
+ Module:terminate(normal, undefined),
+ ok;
+ _ ->
+ case whereis(Key) of
+ undefined ->
+ corba:raise(#'OBJECT_NOT_EXIST'{completion_status=?COMPLETED_NO});
+ Pid ->
+ gen_server:call(Pid, stop)
+ end
+ end;
+ {'external', _} ->
+ orber:dbg("[~p] corba_boa:dispose(~p); external object.",
+ [?LINE, Object], ?DEBUG_LEVEL),
+ %% Must be fixed !!!!!!!!
+ corba:raise(#'NO_IMPLEMENT'{completion_status=?COMPLETED_NO})
+ end;
+ Other ->
+ case iop_ior:get_key(Object) of
+ {_, {pseudo, Module}, _, _, _} ->
+ Module:terminate(normal, Other),
+ ok;
+ Why ->
+ orber:dbg("[~p] corba_boa:dispose(~p); probably subobject key set(~p)",
+ [?LINE, Object, Why], ?DEBUG_LEVEL),
+ corba:raise(#'NO_PERMISSION'{completion_status=?COMPLETED_NO})
+ end
+ end.
+
+get_id(Object) ->
+ iop_ior:get_objkey(Object).
+
+%change_implementation(Object, ImplementationDef) ->
+% ok.
+
+%get_principal(Object, Env) ->
+% ok.
+
+%set_exception(Major, Id, Param) ->
+% ok.
+
+%impl_is_ready(ImplementationDef) ->
+% ok.
+
+%deactivate_impl(ImplementationDef) ->
+% ok.
+
+%obj_is_ready(Object, ImplementationDef) ->
+% ok.
+
+%deactivate_obj(Object) ->
+% ok.
+
+%%-----------------------------------------------------------------
+%% Internal functions
+%%-----------------------------------------------------------------