~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to lib/eva/src/eva.erl

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
%% ``The contents of this file are subject to the Erlang Public License,
2
 
%% Version 1.1, (the "License"); you may not use this file except in
3
 
%% compliance with the License. You should have received a copy of the
4
 
%% Erlang Public License along with this software. If not, it can be
5
 
%% retrieved via the world wide web at http://www.erlang.org/.
6
 
%% 
7
 
%% Software distributed under the License is distributed on an "AS IS"
8
 
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
9
 
%% the License for the specific language governing rights and limitations
10
 
%% under the License.
11
 
%% 
12
 
%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
13
 
%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
14
 
%% AB. All Rights Reserved.''
15
 
%% 
16
 
%%     $Id$
17
 
%%
18
 
-module(eva).
19
 
 
20
 
-include("eva.hrl").
21
 
%%-include_lib("mnemosyne/include/mnemosyne.hrl").
22
 
 
23
 
-export([register_event/2, register_alarm/4,
24
 
         unregister_event/1, unregister_alarm/1,
25
 
         asend_event/3, send_event/3, send_event/4,
26
 
         get_fault_id/0, asend_alarm/5, send_alarm/5, send_alarm/6,
27
 
         aclear_alarm/1, clear_alarm/1, clear_alarm/2,
28
 
         get_no_alarms/0, get_alarms/1, get_alarm_status/0]).
29
 
-export([alarm_first/0, alarm_next/1]).
30
 
 
31
 
%% Timeout for calls to the globally registered eva_server.
32
 
-define(TIME, 10000).
33
 
 
34
 
register_event(Name, Log) ->
35
 
    gen_server:call({global, eva_server}, {reg_event, Name, Log}, ?TIME).
36
 
 
37
 
register_alarm(Name, Log, Class, Severity) ->
38
 
    gen_server:call({global, eva_server},
39
 
                    {reg_alarm, Name, Log, Class, Severity}, ?TIME).
40
 
 
41
 
unregister_event(Name) ->
42
 
    gen_server:call({global, eva_server}, {unreg_event, Name}, ?TIME).
43
 
 
44
 
unregister_alarm(Name) ->
45
 
    gen_server:call({global, eva_server}, {unreg_alarm, Name}, ?TIME).
46
 
 
47
 
 
48
 
asend_event(Name, Sender, Extra) ->
49
 
    gen_server:cast({global, eva_server}, {send_event, {Name, Sender, Extra}}).
50
 
send_event(Name, Sender, Extra) ->
51
 
    gen_server:call({global, eva_server},
52
 
                    {send_event, {Name, Sender, Extra}}, ?TIME).
53
 
send_event(Name, Sender, Extra, Time) ->
54
 
    gen_server:call({global, eva_server},
55
 
                    {send_event, {Name, Sender, Extra}}, Time).
56
 
 
57
 
get_fault_id() -> {node(), now()}.
58
 
 
59
 
asend_alarm(Name, AlarmFaultId, Sender, Cause, Extra) ->
60
 
    Msg = {send_alarm, {Name, AlarmFaultId, Sender, Cause, Extra}},
61
 
    gen_server:cast({global, eva_server}, Msg).
62
 
send_alarm(Name, AlarmFaultId, Sender, Cause, Extra) ->
63
 
    Msg = {send_alarm, {Name, AlarmFaultId, Sender, Cause, Extra}},
64
 
    gen_server:call({global, eva_server}, Msg, ?TIME).
65
 
send_alarm(Name, AlarmFaultId, Sender, Cause, Extra, Time) ->
66
 
    Msg = {send_alarm, {Name, AlarmFaultId, Sender, Cause, Extra}},
67
 
    gen_server:call({global, eva_server}, Msg, Time).
68
 
 
69
 
aclear_alarm(AlarmFaultId) ->
70
 
    gen_server:cast({global, eva_server}, {clear_alarm, AlarmFaultId}).
71
 
clear_alarm(AlarmFaultId) ->
72
 
    gen_server:call({global, eva_server}, {clear_alarm, AlarmFaultId}, ?TIME).
73
 
clear_alarm(AlarmFaultId, Time) ->
74
 
    gen_server:call({global, eva_server}, {clear_alarm, AlarmFaultId}, Time).
75
 
 
76
 
get_no_alarms() ->
77
 
    gen_server:call({global, eva_server}, get_no_alarms).
78
 
 
79
 
get_alarms({name, Name}) ->
80
 
    mnesia:dirty_match_object(?wild_alarm#alarm{name = Name});
81
 
%% This is how I would write if it wasn't for bug in mnemosyne
82
 
%    Handle = query [Alarm || Alarm <- table(alarm),
83
 
%                            Alarm.name = Name] end,
84
 
%    mnesia:ets(fun() -> mnemosyne:eval(Handle) end);
85
 
                       
86
 
get_alarms({sender, Sender}) ->
87
 
    mnesia:dirty_match_object(?wild_alarm#alarm{sender = Sender}).
88
 
%% This is how I would write if it wasn't for bug in mnemosyne
89
 
%    Handle = query [Alarm || Alarm <- table(alarm),
90
 
%                            Alarm.sender = Sender] end,
91
 
%    mnesia:ets(fun() -> mnemosyne:eval(Handle) end).
92
 
 
93
 
get_alarm_status() ->
94
 
    {Critical, Major, Minor, Warning, Indeterminate} =
95
 
        eva_server:get_alarm_status(),
96
 
    [{critical, to_boolean(Critical)},
97
 
     {major, to_boolean(Major)},
98
 
     {minor, to_boolean(Minor)},
99
 
     {warning, to_boolean(Warning)},
100
 
     {indeterminate, to_boolean(Indeterminate)}].
101
 
 
102
 
to_boolean(0) -> false;
103
 
to_boolean(Cnt) -> true.
104
 
 
105
 
%% These should be replaced by calls to appropriate Mnesia functions,
106
 
%% when the order is correctly implemented in Mnesia.
107
 
alarm_first() ->
108
 
    case mnesia:snmp_get_next_index(alarm, []) of
109
 
        {ok, [FirstIndex]} -> {ok, FirstIndex};
110
 
        _ -> '$end_of_table'
111
 
    end.
112
 
 
113
 
alarm_next(Index) ->
114
 
    case mnesia:snmp_get_next_index(alarm, [Index]) of
115
 
        {ok, [NextIndex]} -> {ok, NextIndex};
116
 
        _ -> '$end_of_table'
117
 
    end.
118