diff options
Diffstat (limited to 'lib/cosProperty/src/cosProperty.erl')
-rw-r--r-- | lib/cosProperty/src/cosProperty.erl | 416 |
1 files changed, 0 insertions, 416 deletions
diff --git a/lib/cosProperty/src/cosProperty.erl b/lib/cosProperty/src/cosProperty.erl deleted file mode 100644 index e94d200c2f..0000000000 --- a/lib/cosProperty/src/cosProperty.erl +++ /dev/null @@ -1,416 +0,0 @@ -%%-------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2000-2015. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% File : cosProperty.erl -%% Purpose : -%%---------------------------------------------------------------------- - --module(cosProperty). - -%%--------------- INCLUDES ----------------------------------- --include("cosProperty.hrl"). --include_lib("cosProperty/include/CosPropertyService.hrl"). - -%%--------------- EXPORTS------------------------------------- -%% cosProperty API external --export([start/0, - start_SetDefFactory/0, - start_SetFactory/0, - stop_SetDefFactory/1, - stop_SetFactory/1, - stop/0, - install/0, - install/1, - install_db/0, - install_db/1, - install_db/2, - uninstall/0, - uninstall/1, - uninstall_db/0]). - -%% cosProperty API internal --export([create_link/3, - get_option/3, - type_check/2, - query_result/1, - start_PropertiesIterator/1, - start_PropertyNamesIterator/1, - create_static_SetDef/2]). - -%% Application callbacks --export([start/2, init/1, stop/1]). - -%%--------------- DEFINES ------------------------------------ - --define(SUPERVISOR_NAME, oe_cosPropertySup). --define(SUP_FLAG, {simple_one_for_one,50,10}). --define(SUP_PROP_SPEC(T,I), - ['CosPropertyService_PropertiesIterator',I, - [{sup_child, true}, {regname, {global, T}}]]). --define(SUP_NAMES_SPEC(T,I), - ['CosPropertyService_PropertyNamesIterator',I, - [{sup_child, true}, {regname, {global, T}}]]). --define(SUP_CHILD, - {"oe_PropertyChild", - {cosProperty,create_link, []}, - transient,100000,worker, - []}). - -%%------------------------------------------------------------ -%% function : install -%% Arguments: - -%% Returns : ok | EXIT | EXCEPTION -%% Effect : Install necessary data in the IFR DB -%%------------------------------------------------------------ -install() -> - install([]). -install(_Options) -> - case catch oe_CosProperty:'oe_register'() of - ok -> - ok; - {'EXIT',{unregistered,App}} -> - ?write_ErrorMsg("Unable to register cosProperty; application ~p not registered.~n", - [App]), - exit({unregistered,App}); - {'EXCEPTION',_} -> - ?write_ErrorMsg("Unable to register cosProperty; propably already registered. -You are adviced to confirm this.~n", []), - exit({error, "Register in the IFR failed."}); - Reason -> - ?write_ErrorMsg("Unable to register cosProperty; reason ~p", [Reason]), - exit({error, "Register in the IFR failed."}) - end. - -%%------------------------------------------------------------ -%% function : install_db -%% Arguments: - -%% Returns : ok | EXIT | EXCEPTION -%% Effect : Install necessary data in the IFR DB -%%------------------------------------------------------------ -install_db() -> - install_db(infinity, []). -install_db(Timeout) -> - install_db(Timeout, []). -install_db(Timeout, Options) -> - case install_table(Timeout, Options) of - ok -> - ok; - {error, [DB_tables_created, Wait]} -> - ?write_ErrorMsg("Able to register cosProperty but failed adding table in mnesia (~p, ~p)", - [DB_tables_created, Wait]), - exit({error, "Adding data in mnesia failed."}); - Why -> - ?write_ErrorMsg("Able to register cosProperty but failed adding table in mnesia with reason ~p", - [Why]), - exit({error, "Adding data in mnesia failed."}) - end. - -%%------------------------------------------------------------ -%% function : install_table -%% Arguments: - -%% Returns : ok | {error, Data} -%% Effect : Install necessary data in mnesia -%%------------------------------------------------------------ -install_table(Timeout, Options) -> - %% Fetch a list of the defined tables to see if 'oe_CosPropertyService' - %% is defined. - AllTabs = mnesia:system_info(tables), - DB_tables_created = - case lists:member('oe_CosPropertyService', AllTabs) of - true -> - case lists:member({local_content, true}, - Options) of - true-> - mnesia:add_table_copy('oe_CosPropertyService', - node(), - ram_copies); - _-> - mnesia:create_table('oe_CosPropertyService',[{attributes, - record_info(fields, - 'oe_CosPropertyService')} - |Options]) - end; - _ -> - mnesia:create_table('oe_CosPropertyService',[{attributes, - record_info(fields, - 'oe_CosPropertyService')} - |Options]) - end, - Wait = mnesia:wait_for_tables(['oe_CosPropertyService'], Timeout), - %% Check if any error has occured yet. If there are errors, return them. - if - DB_tables_created == {atomic, ok}, - Wait == ok -> - ok; - true -> - {error, [DB_tables_created, Wait]} - end. - - -%%------------------------------------------------------------ -%% function : query_result -%% Arguments: - -%% Returns : error | Data -%% Effect : Check a read transaction -%%------------------------------------------------------------ -query_result(Qres) -> - case Qres of - {atomic, [Hres]} -> - Hres#oe_CosPropertyService.properties; - {atomic, [_Hres | _Tres]} -> - error; - {atomic, []} -> - error; - _Other -> - error - end. - -%%------------------------------------------------------------ -%% function : uninstall -%% Arguments: - -%% Returns : ok | EXIT | EXCEPTION -%% Effect : Remove data related to cosProperty from the IFR DB -%%------------------------------------------------------------ -uninstall() -> - uninstall([]). -uninstall(_Options) -> - application:stop(cosProperty), - oe_CosProperty:oe_unregister(). - -%%------------------------------------------------------------ -%% function : uninstall -%% Arguments: - -%% Returns : ok | EXIT | EXCEPTION -%% Effect : Remove data related to cosProperty from the IFR DB -%%------------------------------------------------------------ -uninstall_db() -> - application:stop(cosProperty), - case mnesia:delete_table('oe_CosPropertyService') of - {atomic, ok} -> - ok; - {aborted, _Reason} -> - exit({error, "Removing data from mnesia failed."}) - end. - -%%------------------------------------------------------------ -%% function : create_static_SetDef -%% Arguments: -%% Returns : -%% Effect : Starts or stops the cosProperty application. -%%------------------------------------------------------------ -create_static_SetDef(PropTypes, PropDefs) -> - InitProps = propertyDef2local(PropDefs, []), - 'CosPropertyService_PropertySetDef':oe_create({static, fixed_readonly, PropTypes, - PropDefs, InitProps, - ?PropertySetDef}, - [{pseudo, true}]). -propertyDef2local([#'CosPropertyService_PropertyDef' - {property_name = Name, - property_value = Value, - property_mode = fixed_readonly}|T], Acc) -> - propertyDef2local(T, [{Name, Value, fixed_readonly}|Acc]); -propertyDef2local([], Acc) -> - Acc; -propertyDef2local(_, _) -> - exit({error, "Bad Mode type supplied. Must be fixed_readonly"}). - -%%------------------------------------------------------------ -%% function : start/stop -%% Arguments: -%% Returns : -%% Effect : Starts or stops the cosProperty application. -%%------------------------------------------------------------ -start() -> - application:start(cosProperty). -stop() -> - application:stop(cosProperty). - - - -%%-----------------------------------------------------------% -%% function : start_SetDefFactory -%% Arguments: - -%% Returns : A PropertySetDefFactory reference. -%% Effect : -%%------------------------------------------------------------ -start_SetDefFactory() -> - 'CosPropertyService_PropertySetDefFactory':oe_create([], [{pseudo, true}]). - -%%-----------------------------------------------------------% -%% function : start_SetFactory -%% Arguments: - -%% Returns : A PropertySetFactory reference. -%% Effect : -%%------------------------------------------------------------ -start_SetFactory() -> - 'CosPropertyService_PropertySetFactory':oe_create([], [{pseudo, true}]). - -%%-----------------------------------------------------------% -%% function : stop_SetDefFactory -%% Arguments: Factory - A PropertySetDefFactory reference. -%% Returns : -%% Effect : -%%------------------------------------------------------------ -stop_SetDefFactory(Factory) -> - corba:dispose(Factory). - -%%-----------------------------------------------------------% -%% function : stop_SetFactory -%% Arguments: Factory - A PropertySetFactory reference. -%% Returns : -%% Effect : -%%------------------------------------------------------------ -stop_SetFactory(Factory) -> - corba:dispose(Factory). - -%%------------------------------------------------------------ -%% function : start -%% Arguments: Type - see module application -%% Arg - see module application -%% Returns : -%% Effect : Module callback for application -%%------------------------------------------------------------ -start(_, _) -> - supervisor:start_link({local, ?SUPERVISOR_NAME}, cosProperty, app_init). - - -%%------------------------------------------------------------ -%% function : stop -%% Arguments: Arg - see module application -%% Returns : -%% Effect : Module callback for application -%%------------------------------------------------------------ -stop(_) -> - ok. - -%%-----------------------------------------------------------% -%% function : init -%% Arguments: -%% Returns : -%% Effect : -%%------------------------------------------------------------ -%% Starting using create_factory/X -init(own_init) -> - {ok,{?SUP_FLAG, [?SUP_CHILD]}}; -%% When starting as an application. -init(app_init) -> - {ok,{?SUP_FLAG, [?SUP_CHILD]}}. - -%%-----------------------------------------------------------% -%% function : create_link -%% Arguments: Module - which Module to call -%% Env/ArgList - ordinary oe_create arguments. -%% Returns : -%% Exception: -%% Effect : Necessary since we want the supervisor to be a -%% 'simple_one_for_one'. Otherwise, using for example, -%% 'one_for_one', we have to call supervisor:delete_child -%% to remove the childs startspecification from the -%% supervisors internal state. -%%------------------------------------------------------------ -create_link(Module, Env, ArgList) -> - Module:oe_create_link(Env, ArgList). - -%%-----------------------------------------------------------% -%% function : start_PropertiesIterator -%% Arguments: -%% Returns : -%% Exception: -%% Effect : -%%------------------------------------------------------------ -start_PropertiesIterator(Args) -> - Name = create_name(propertiesIterator), - case supervisor:start_child(?SUPERVISOR_NAME, ?SUP_PROP_SPEC(Name, Args)) of - {ok, Pid, Obj} when is_pid(Pid) -> - Obj; - _Other-> - corba:raise(#'INTERNAL'{completion_status=?COMPLETED_NO}) - end. - -%%-----------------------------------------------------------% -%% function : start_PropertyNamesIterator -%% Arguments: -%% Returns : -%% Exception: -%% Effect : -%%------------------------------------------------------------ -start_PropertyNamesIterator(Args) -> - Name = create_name(propertiesIterator), - case supervisor:start_child(?SUPERVISOR_NAME, ?SUP_NAMES_SPEC(Name, Args)) of - {ok, Pid, Obj} when is_pid(Pid) -> - Obj; - _Other-> - corba:raise(#'INTERNAL'{completion_status=?COMPLETED_NO}) - end. - - -%%-----------------------------------------------------------% -%% function : get_option -%% Arguments: -%% Returns : -%% Exception: -%% Effect : -%%------------------------------------------------------------ -get_option(Key, OptionList, DefaultList) -> - case lists:keysearch(Key, 1, OptionList) of - {value,{Key,Value}} -> - Value; - _ -> - case lists:keysearch(Key, 1, DefaultList) of - {value,{Key,Value}} -> - Value; - _-> - {error, "Invalid option"} - end - end. - -%%-----------------------------------------------------------% -%% function : type_check -%% Arguments: Obj - objectrefernce to test. -%% Mod - Module which contains typeID/0. -%% Returns : 'ok' or raises exception. -%% Effect : -%%------------------------------------------------------------ -type_check(Obj, Mod) -> - case catch corba_object:is_a(Obj,Mod:typeID()) of - true -> - ok; - _ -> - corba:raise(#'BAD_PARAM'{completion_status=?COMPLETED_NO}) - end. - - -%%-----------------------------------------------------------% -%% function : create_name/1 -%% Arguments: -%% Returns : -%% Exception: -%% Effect : -%%------------------------------------------------------------ -create_name(Type) -> - Time = erlang:system_time(), - Unique = erlang:unique_integer([positive]), - lists:concat(['oe_',node(),'_',Type,'_',Time,'_',Unique]). - -%%--------------- END OF MODULE ------------------------------ - - |