aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cosTime/src/CosTimerEvent_TimerEventService_impl.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cosTime/src/CosTimerEvent_TimerEventService_impl.erl')
-rw-r--r--lib/cosTime/src/CosTimerEvent_TimerEventService_impl.erl118
1 files changed, 118 insertions, 0 deletions
diff --git a/lib/cosTime/src/CosTimerEvent_TimerEventService_impl.erl b/lib/cosTime/src/CosTimerEvent_TimerEventService_impl.erl
new file mode 100644
index 0000000000..b324ecbecd
--- /dev/null
+++ b/lib/cosTime/src/CosTimerEvent_TimerEventService_impl.erl
@@ -0,0 +1,118 @@
+%%--------------------------------------------------------------------
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2000-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 : 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 ------------------------------