Пример #1
0
        internal void Notify_AlarmOrEvent(ModuleState module, AlarmOrEventInfo e)
        {
            var ae = new AlarmOrEvent()
            {
                ModuleID        = module.ID,
                ModuleName      = module.Name,
                Time            = e.Time,
                IsSystem        = false,
                Severity        = e.Severity,
                Type            = e.Type,
                Message         = e.Message,
                Details         = e.Details,
                AffectedObjects = e.AffectedObjects,
                Initiator       = e.Initiator
            };

            reqHandler.OnAlarmOrEvent(ae);

            string msg = e.Message;

            switch (e.Severity)
            {
            case Severity.Info:
                module.logger.Info(msg);
                break;

            case Severity.Warning:
                module.logger.Warn(msg);
                break;

            case Severity.Alarm:
                module.logger.Error(msg);
                break;
            }
        }
Пример #2
0
        public bool UpdateWarningAlarmState(AlarmOrEventInfo e)
        {
            bool warnOrAlarm = e.Severity == Severity.Warning || e.Severity == Severity.Alarm;

            if (warnOrAlarm)
            {
                if (!map.ContainsKey(e.Type))
                {
                    map[e.Type] = new HashSet <ObjectRef>();
                }
                var set = map[e.Type];
                if (e.AffectedObjects != null)
                {
                    foreach (var obj in e.AffectedObjects)
                    {
                        set.Add(obj);
                    }
                }
                return(false);
            }
            else if (e.ReturnToNormal && map.ContainsKey(e.Type))
            {
                var  set        = map[e.Type];
                bool anyRemoved = false;
                if (e.AffectedObjects != null)
                {
                    foreach (var obj in e.AffectedObjects)
                    {
                        anyRemoved |= set.Remove(obj);
                    }
                }
                bool logInfo = anyRemoved || set.Count == 0;
                if (set.Count == 0)
                {
                    map.Remove(e.Type);
                }
                return(logInfo);
            }
            else
            {
                return(e.Severity == Severity.Info && !e.ReturnToNormal);
            }
        }
Пример #3
0
 public void Notify_AlarmOrEvent(AlarmOrEventInfo eventInfo)
 {
     connector.SendEvent(ID_Event_AlarmOrEvent, s => StdJson.ObjectToStream(eventInfo, s));
 }
Пример #4
0
 public void Notify_AlarmOrEvent(AlarmOrEventInfo alarmOrEventInfo)
 {
     syncContext.Post(delegate(object?state) { core.Notify_AlarmOrEvent(this, alarmOrEventInfo); }, null);
 }
Пример #5
0
        internal void Notify_AlarmOrEvent(ModuleState module, AlarmOrEventInfo e)
        {
            Origin?initiator = e.Initiator;

            if (initiator.HasValue)
            {
                Origin origin = initiator.Value;
                string id     = origin.ID;
                if (origin.Type == OriginType.User)
                {
                    User user = userManagement.Users.FirstOrDefault(u => u.ID == id);
                    if (user != null)
                    {
                        origin.Name = user.Name;
                    }
                    else if (origin.Name == null)
                    {
                        origin.Name = "";
                    }
                }
                else if (origin.Type == OriginType.Module)
                {
                    var theModule = modules.FirstOrDefault(m => m.ID == id);
                    if (theModule != null)
                    {
                        origin.Name = theModule.Name;
                    }
                    else if (origin.Name == null)
                    {
                        origin.Name = "";
                    }
                }
                initiator = origin;
            }

            var ae = new AlarmOrEvent()
            {
                ModuleID        = module.ID,
                ModuleName      = module.Name,
                Time            = e.Time,
                IsSystem        = false,
                Severity        = e.Severity,
                ReturnToNormal  = e.ReturnToNormal,
                Type            = e.Type,
                Message         = e.Message,
                Details         = e.Details,
                AffectedObjects = e.AffectedObjects,
                Initiator       = initiator
            };

            reqHandler.OnAlarmOrEvent(ae);

            bool logInfo = module.UpdateWarningAlarmState(e);

            string msg = e.Message;

            switch (e.Severity)
            {
            case Severity.Info:
                if (logInfo)
                {
                    module.logger.Info(msg);
                }
                break;

            case Severity.Warning:
                module.logger.Warn(msg);
                break;

            case Severity.Alarm:
                module.logger.Error(msg);
                break;
            }
        }