%%--------------------------------------------------------------------
%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2000-2009. 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 : CosTimerEvent_TimerEventService_impl.erl
%% Purpose :
%%----------------------------------------------------------------------
-module('CosTimerEvent_TimerEventService_impl').
%%--------------- INCLUDES -----------------------------------
-include("cosTimeApp.hrl").
%%--------------- EXPORTS ------------------------------------
%%--------------- External -----------------------------------
%% Interface functions
-export([register/4, unregister/3, event_time/3]).
%%--------------- gen_server specific exports ----------------
-export([handle_info/2, code_change/3]).
-export([init/1, terminate/2]).
%% Data structures
-record(state, {timer}).
%% Data structures constructors
-define(get_InitState(T),
#state{timer=T}).
%% Data structures selectors
-define(get_TimerObj(S), S#state.timer).
%% Data structures modifiers
%% MISC
%%-----------------------------------------------------------%
%% function : handle_info, code_change
%% Arguments:
%% Returns :
%% Effect : Functions demanded by the gen_server module.
%%------------------------------------------------------------
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
handle_info(_Info, State) ->
?debug_print("INFO: ~p~n", [_Info]),
{noreply, State}.
%%----------------------------------------------------------%
%% function : init, terminate
%% Arguments:
%%-----------------------------------------------------------
init([Timer]) ->
process_flag(trap_exit, true),
timer:start(),
{ok, ?get_InitState(Timer)}.
terminate(_Reason, _State) ->
ok.
%%-----------------------------------------------------------
%%------- Exported external functions -----------------------
%%-----------------------------------------------------------
%%----------------------------------------------------------%
%% function : register
%% Arguments: EventInterface - CosEventComm::PushConsumer
%% Data - #any
%% Returns : TimerEventHandler - objref#
%%-----------------------------------------------------------
register(OE_THIS, State, EventInterface, Data) ->
{reply,
cosTime:start_event_handler([OE_THIS, self(),EventInterface, Data,
?get_TimerObj(State)]),
State}.
%%----------------------------------------------------------%
%% function : unregister
%% Arguments: TimerEventHandler - objref#
%% Returns : ok
%%-----------------------------------------------------------
unregister(_OE_THIS, State, TimerEventHandler) ->
catch corba:dispose(TimerEventHandler),
{reply, ok, State}.
%%----------------------------------------------------------%
%% function : event_time
%% Arguments: TimerEvent - #'CosTimerEvent_TimerEventT'{utc, event_data}
%% Returns : CosTime::UTO
%%-----------------------------------------------------------
event_time(_OE_THIS, State, #'CosTimerEvent_TimerEventT'{utc=Utc}) ->
{reply, 'CosTime_UTO':oe_create([Utc],[{pseudo,true}]), State}.
%%--------------- LOCAL FUNCTIONS ----------------------------
%%--------------- MISC FUNCTIONS, E.G. DEBUGGING -------------
%%--------------- END OF MODULE ------------------------------