aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cosTransactions/src/ETraP_Common.hrl
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/cosTransactions/src/ETraP_Common.hrl
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/cosTransactions/src/ETraP_Common.hrl')
-rw-r--r--lib/cosTransactions/src/ETraP_Common.hrl340
1 files changed, 340 insertions, 0 deletions
diff --git a/lib/cosTransactions/src/ETraP_Common.hrl b/lib/cosTransactions/src/ETraP_Common.hrl
new file mode 100644
index 0000000000..5082282efb
--- /dev/null
+++ b/lib/cosTransactions/src/ETraP_Common.hrl
@@ -0,0 +1,340 @@
+%%--------------------------------------------------------------------
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1999-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 : ETraP_Common.hrl
+%% Purpose :
+%%---------------------------------------------------------------------
+
+-ifndef(ETRAP_COMMON_HRL).
+-define(ETRAP_COMMON_HRL, true).
+
+%%--------------- INCLUDES ---------------------------------------------
+-include_lib("orber/include/corba.hrl").
+-include_lib("cosTransactions/include/CosTransactions.hrl").
+
+%%-------- CONSTANTS ---------------------------------------------------
+%% Timeouts
+-define(tr_comm_failure_wait,
+ case catch application:get_env(cosTransactions, comFailWait) of
+ {ok, _Time} when is_integer(_Time) ->
+ _Time;
+ _ ->
+ 5000
+ end).
+
+-define(tr_max_retries,
+ case catch application:get_env(cosTransactions, maxRetries) of
+ {ok, _Max} when is_integer(_Max) ->
+ _Max;
+ _ ->
+ 40
+ end).
+
+%% Exceptions
+% Heuristic
+-define(tr_mixed,
+ #'CosTransactions_HeuristicMixed' {}).
+-define(tr_hazard,
+ #'CosTransactions_HeuristicHazard' {}).
+-define(tr_commit,
+ #'CosTransactions_HeuristicCommit' {}).
+-define(tr_rollback,
+ #'CosTransactions_HeuristicRollback' {}).
+%% Standard
+-define(tr_subunavailable,
+ #'CosTransactions_SubtransactionsUnavailable' {}).
+-define(tr_unavailable,
+ #'CosTransactions_Unavailable' {}).
+-define(tr_unprepared,
+ #'CosTransactions_NotPrepared' {}).
+-define(tr_inactive,
+ #'CosTransactions_Inactive' {}).
+-define(tr_nosync,
+ #'CosTransactions_SynchronizationUnavailable' {}).
+-define(tr_badparam,
+ #'BAD_PARAM'{completion_status=?COMPLETED_NO}).
+-define(tr_NotSubtr,
+ #'CosTransactions_NotSubtransaction' {}).
+
+%% TypeID:s
+-define(tr_Terminator,
+ 'CosTransactions_Terminator':typeID()).
+-define(tr_Coordinator,
+ 'CosTransactions_Coordinator':typeID()).
+-define(tr_Control,
+ 'CosTransactions_Control':typeID()).
+-define(tr_RecoveryCoordinator,
+ 'CosTransactions_RecoveryCoordinator':typeID()).
+-define(tr_SubtransactionAwareResource,
+ 'CosTransactions_SubtransactionAwareResource':typeID()).
+-define(tr_Synchronization,
+ 'CosTransactions_Synchronization':typeID()).
+-define(tr_Resource,
+ 'CosTransactions_Resource':typeID()).
+-define(tr_ETraP,
+ 'ETraP_Server':typeID()).
+-define(tr_TransactionalObject,
+ 'CosTransactions_TransactionalObject':typeID()).
+
+
+%%-------- MISC --------------------------------------------------------
+
+-define(tr_error_msg(Txt, Arg),
+error_logger:error_msg("============ CosTransactions ==============~n"
+ Txt
+ "===========================================~n",
+ Arg)).
+
+
+-define(tr_NIL_OBJ_REF, corba:create_nil_objref()).
+
+-define(tr_FAC_DEF, [{hash_max, 1013},
+ {allow_subtr, true},
+ {typecheck, true},
+ {tty, false},
+ {logfile, false}]).
+
+
+%%-------- Supervisor child-specs ------------------------------------
+-define(FACTORY_NAME, oe_cosTransactionsFactory).
+-define(SUPERVISOR_NAME, cosTransactions_sup).
+-define(SUP_FLAG, {simple_one_for_one,50,10}).
+
+-define(SUP_FAC(Env),
+ ['CosTransactions_TransactionFactory',Env,
+ [{sup_child, true}, {regname, {local, ?FACTORY_NAME}}]]).
+
+-define(SUP_ETRAP(Env),
+ ['ETraP_Server', Env,
+ [{sup_child, true}, {persistent, true},
+ {regname, {global, ?tr_get_etrap(Env)}}]]).
+
+-define(SUP_TERMINATOR(Env),
+ ['CosTransactions_Terminator', Env,
+ [{sup_child, true}, {persistent, true},
+ {regname, {global, ?tr_get_etrap(Env)}}]]).
+
+-define(SUP_CHILD,
+ {"oe_child",
+ {'ETraP_Common',create_link, []},
+ transient,100000,worker,
+ ['ETraP_Common',
+ 'ETraP_Server_impl',
+ 'ETraP_Server',
+ 'CosTransactions_Terminator_impl',
+ 'CosTransactions_Terminator',
+ 'CosTransactions_TransactionFactory_impl',
+ 'CosTransactions_TransactionFactory']}).
+
+
+-define(tr_start_child(SPEC),
+ case supervisor:start_child(?SUPERVISOR_NAME, SPEC) of
+ {ok, Pid, Obj} when is_pid(Pid) ->
+ Obj;
+ _Other->
+ corba:raise(?tr_badparam)
+ end).
+
+-define(tr_start_child_pid(SPEC),
+ supervisor:start_child(?SUPERVISOR_NAME, SPEC)).
+
+-define(tr_terminate_child(Child),
+ supervisor:terminate_child(?SUPERVISOR_NAME, Child)).
+
+-define(tr_delete_child(Child),
+ supervisor:delete_child(?SUPERVISOR_NAME, Child)).
+
+%%-------- DATASTRUCTURES ----------------------------------------------
+%% tr_*_*
+-record(context, {terminator, etrap, recCoord, alarm = infinity,
+ timeout = infinity, parents=[], trid, typeCheck,
+ sub_tr_allowed, hashMax, local, rollback=false,
+ reportH, maxRetries, comFailWait}).
+
+
+%%-------- FUNS --------------------------------------------------------
+-define(tr_IS_MEMBER(Obj),
+ fun(X) ->
+ case catch corba_object:is_equivalent(Obj, X) of
+ true ->
+ true;
+ _ ->
+ false
+ end
+ end).
+
+%% Managing conditional debug functions
+-define(is_debug_compiled, 'ETraP_Common':is_debug_compiled()).
+-define(set_debug_context(L, C),
+ etrap_test_lib:set_debug_context(L, C, ?FILE, ?LINE)).
+
+
+-ifdef(debug).
+-define(put_debug_data(Key, Data), erlang:put(Key, Data)).
+-define(get_debug_data(Key), erlang:get(Key)).
+-define(eval_debug_fun(I, E),
+ etrap_test_lib:eval_debug_fun(I, E, ?FILE, ?LINE)).
+-define(activate_debug_fun(I, F, C),
+ etrap_test_lib:activate_debug_fun(I, F, C, ?FILE, ?LINE)).
+-define(deactivate_debug_fun(I),
+ etrap_test_lib:deactivate_debug_fun(I, ?FILE, ?LINE)).
+-define(debug_print(F,A),
+ io:format("[LINE: ~p] "++F,[?LINE]++A)).
+-define(scratch_debug_fun,
+ etrap_test_lib:scratch_debug_fun()).
+-else.
+-define(put_debug_data(Key, Data), ok).
+-define(get_debug_data(Key), ok).
+-define(eval_debug_fun(I, E), ok).
+-define(activate_debug_fun(I, F, C), ok).
+-define(deactivate_debug_fun(I), ok).
+-define(debug_print(F,A), ok).
+-define(scratch_debug_fun, ok).
+-endif.
+
+
+%%-------- CONSTRUCTORS ------------------------------------------------
+
+-define(tr_create_context(ETraP, Terminator, TypeCheck, HM, SubtrOK, MaxRetries,
+ ComFailWait),
+ #context{etrap = ETraP, terminator = Terminator, typeCheck = TypeCheck,
+ hashMax = HM, sub_tr_allowed = SubtrOK, maxRetries = MaxRetries,
+ comFailWait = ComFailWait}).
+
+
+%%-------- MISC --------------------------------------------------------
+-define(tr_notimeout(Context),
+ 'ETraP_Common':try_timeout(Context#context.alarm) == false).
+-define(tr_is_root(Context), Context#context.parents == []).
+-define(tr_dont_reportH(Context), Context#context.reportH == false).
+-define(tr_is_retransmit(Context),
+ Context#context.reportH =/= undefined,
+ Context#context.reportH =/= true,
+ Context#context.reportH =/= false).
+
+%%-------- SELECTORS ---------------------------------------------------
+
+-define(tr_get_reportH(Context),
+ Context#context.reportH).
+
+-define(tr_get_rollback(Context),
+ Context#context.rollback).
+
+-define(tr_get_subTraOK(Context),
+ Context#context.sub_tr_allowed).
+
+-define(tr_get_hashMax(Context),
+ Context#context.hashMax).
+
+-define(tr_get_local(Context),
+ Context#context.local).
+
+-define(tr_get_trid(Context),
+ Context#context.trid).
+
+-define(tr_get_typeCheck(Context),
+ Context#context.typeCheck).
+
+-define(tr_get_recCoord(Context),
+ Context#context.recCoord).
+
+-define(tr_get_alarm(Context),
+ Context#context.alarm).
+
+-define(tr_get_timeout(Context),
+ Context#context.timeout).
+
+-define(tr_get_etrap(Context),
+ Context#context.etrap).
+
+-define(tr_get_terminator(Context),
+ Context#context.terminator).
+
+-define(tr_get_id(Context),
+ Context#context.self).
+
+-define(tr_get_maxW(Context),
+ Context#context.comFailWait).
+
+-define(tr_get_maxR(Context),
+ Context#context.maxRetries).
+
+-define(tr_get_parents(Context),
+ Context#context.parents).
+
+-define(tr_get_parent(Context),
+ lists:nth(1, Context#context.parents)).
+
+%%-------- MODIFIERS ---------------------------------------------------
+
+-define(tr_set_reportH(Context, Bool),
+ Context#context{reportH = Bool}).
+
+-define(tr_set_rollback(Context, Bool),
+ Context#context{rollback = Bool}).
+
+-define(tr_set_subTraOK(Context, Bool),
+ Context#context{sub_tr_allowed = Bool}).
+
+-define(tr_set_hashMax(Context, HM),
+ Context#context{hashMax = HM}).
+
+-define(tr_reset_local(Context),
+ Context#context{local = undefined}).
+
+-define(tr_set_local(Context, Local),
+ Context#context{local = Local}).
+
+-define(tr_set_trid(Context, TRID),
+ Context#context{trid = TRID}).
+
+-define(tr_set_typeCheck(Context, Bool),
+ Context#context{typeCheck = Bool}).
+
+-define(tr_set_id(Context, ID),
+ Context#context{self = ID}).
+
+-define(tr_set_parents(Context, Parents),
+ Context#context{parents = Parents).
+
+-define(tr_add_parent(Context, Parent),
+ Context#context{parents = [Parent] ++ Context#context.parents}).
+
+-define(tr_set_recCoord(Context, R),
+ Context#context{recCoord = R}).
+
+-define(tr_set_alarm(Context, EC),
+ Context#context{alarm = EC}).
+
+-define(tr_set_timeout(Context, T),
+ Context#context{timeout = T}).
+
+-define(tr_set_etrap(Context, ETraP),
+ Context#context{etrap = ETraP}).
+
+-define(tr_set_terminator(Context, T),
+ Context#context{terminator = T}).
+
+-endif.
+
+%%-------------- EOF ---------------------------------------------------
+
+