コード例 #1
0
        private void LoadClientAlarm()
        {
            try
            {
                IAlarmClient alarmClient = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);
                AlarmLine[]  alarms      = alarmClient.GetAlarmLines(0, 10, new VideoOS.Platform.Proxy.Alarm.AlarmFilter()
                {
                    Orders = new OrderBy[] { new OrderBy()
                                             {
                                                 Order = Order.Descending, Target = Target.Timestamp
                                             } }
                });

                foreach (AlarmLine line in alarms)
                {
                    Alarm           alarm = alarmClient.Get(line.Id);
                    DataGridViewRow row   = new DataGridViewRow();
                    row.Tag = alarm;
                    string alarmDef = alarm.RuleList != null && alarm.RuleList.Count > 0 ? alarm.RuleList[0].Name : "";
                    row.CreateCells(dataGridViewAlarm, alarm.EventHeader.Source.Name, alarm.EventHeader.Timestamp.ToLocalTime(),
                                    alarm.EventHeader.Message, alarm.EventHeader.Priority, alarm.State, alarmDef);
                    dataGridViewAlarm.Rows.Add(row);
                }
            }
            catch (Exception ex)
            {
                EnvironmentManager.Instance.ExceptionDialog("OnLoad", ex);
            }
        }
コード例 #2
0
ファイル: Alarms.cs プロジェクト: malliina/musicpimp-win
 private async Task UpdateAlarmList(IAlarmClient client)
 {
     if (client != null)
     {
         await WebAware(async() => {
             var version       = await client.Session.PingAuth();
             var serverVersion = new Version(version.version);
             if (serverVersion < PimpSessionBase.AlarmsSupportingVersion)
             {
                 FeedbackMessage = MusicPimpOldVersion;
             }
             else
             {
                 var alarms = await client.Alarms();
                 if (alarms.Count() == 0)
                 {
                     FeedbackMessage = "No alarms have been added.";
                 }
                 AlarmList = new ObservableCollection <AlarmModel>(alarms);
             }
         });
     }
     else
     {
         FeedbackMessage = AtLeastOneMusicPimpServerRequired;
     }
 }
コード例 #3
0
        private void loadClientEvent()
        {
            try
            {
                IAlarmClient alarmClient = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);

                EventLine[] events = alarmClient.GetEventLines(0, 10,
                                                               new VideoOS.Platform.Proxy.Alarm.EventFilter()
                {
                });


                foreach (EventLine line in events)
                {
                    BaseEvent       baseevent = alarmClient.GetEvent(line.Id);
                    DataGridViewRow row       = new DataGridViewRow();
                    row.Tag = baseevent;
                    row.CreateCells(dataGridViewAlarm, baseevent.EventHeader.Type, baseevent.EventHeader.Message, line.Timestamp.ToLocalTime(), line.SourceName);
                    dataGridViewAlarm.Rows.Add(row);
                }
            }
            catch (Exception ex)
            {
                EnvironmentManager.Instance.ExceptionDialog("loading Event", ex);
            }
        }
コード例 #4
0
        private EventLine[] GetAnalyticsEventList(DateTime periodStart, DateTime periodEnd)
        {
            AlarmClientManager _alarmClientManager = new AlarmClientManager();

            int eventCount = (int)(_startCache + _endCache) / 500;

            try
            {
                IAlarmClient alarmClient = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);
                EventLine[]  events      = alarmClient.GetEventLines(0, eventCount, new VideoOS.Platform.Proxy.Alarm.EventFilter()
                {
                    Conditions = new Condition[] { new Condition()
                                                   {
                                                       Operator = Operator.NotEquals, Target = Target.Type, Value = "System Event"
                                                   },
                                                   new Condition()
                                                   {
                                                       Operator = Operator.LessThan, Target = Target.Timestamp, Value = periodEnd
                                                   },
                                                   new Condition()
                                                   {
                                                       Operator = Operator.GreaterThan, Target = Target.Timestamp, Value = periodStart
                                                   } }
                });
                return(events);
            }
            catch (Exception ex)
            {
                // this will happen if for instance the Event Server cannot be contacted. Showing error each time is quite intrusive, so let's just log.
                EnvironmentManager.Instance.Log(true, nameof(OverlayGraphOnEventBackgroundPlugin), "Exception thrown: " + ex.Message);
                return(new EventLine[] { });
            }
        }
コード例 #5
0
        private void loadClientAccess()
        {
            try
            {
                IAlarmClient alarmClient = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);

                EventLine[] events = alarmClient.GetEventLines(0, 10,
                                                               new VideoOS.Platform.Proxy.Alarm.EventFilter()
                {
                    Conditions = new Condition[] { new Condition()
                                                   {
                                                       Operator = Operator.Equals, Target = Target.Type, Value = "Access Control System Event"
                                                   } }
                });


                foreach (EventLine line in events)
                {
                    BaseEvent          baseevent          = alarmClient.GetEvent(line.Id);
                    AccessControlEvent accessControlEvent = baseevent as AccessControlEvent;
                    if (accessControlEvent != null)
                    {
                        DataGridViewRow row = new DataGridViewRow();
                        row.Tag = baseevent;
                        string credentialHolderId = "";
                        string systemId           = "";
                        if (accessControlEvent.RelatedAccessControlCredentialHolderIds != null)
                        {
                            if (accessControlEvent.RelatedAccessControlCredentialHolderIds.Length > 0)
                            {
                                credentialHolderId = accessControlEvent.RelatedAccessControlCredentialHolderIds[0];
                            }
                        }
                        if (accessControlEvent.AccessControlSystemId != null)
                        {
                            systemId = accessControlEvent.AccessControlSystemId.ToString();
                        }
                        row.CreateCells(
                            dataGridViewAlarm,
                            baseevent.EventHeader.Type,
                            baseevent.EventHeader.Message,
                            line.Timestamp.ToLocalTime(),
                            line.SourceName,
                            credentialHolderId,
                            systemId);
                        dataGridViewAlarm.Rows.Add(row);
                    }
                }
            }
            catch (Exception ex)
            {
                EnvironmentManager.Instance.ExceptionDialog("loading Acces Control System Event", ex);
            }
        }
コード例 #6
0
 public AlarmViewModel(
     IAlarmClient alarmClient,
     IAlarmNotificationClient alarmNotificationClient,
     INavigationService navigationService)
 {
     this.alarmClient             = alarmClient;
     this.alarmNotificationClient = alarmNotificationClient;
     _navigationService           = navigationService;
     ArmCommand       = new Command(async() => await ExecuteArmCommand());
     DisarmCommand    = new Command(async() => await ExecuteDisarmCommand());
     ConfigureCommand = new Command(async() => await ExecuteConfigureCommand());
 }
コード例 #7
0
ファイル: Alarms.cs プロジェクト: malliina/musicpimp-win
 private void ResetClient(MusicEndpoint endpoint)
 {
     Endpoint = endpoint;
     if (client != null)
     {
         Utils.Suppress <Exception>(client.Session.Dispose);
         client = null;
     }
     if (endpoint != null)
     {
         client = new SimpleAlarmClient(endpoint, DateTimeHelper.Instance);
     }
 }
コード例 #8
0
ファイル: AlarmModel.cs プロジェクト: malliina/musicpimp-win
 public AlarmModel(IAlarmClient client)
 {
     Client = client;
     player = provider.PlayerManager.NoUploadsPimpPlayer(Client.Session);
     EnabledDays.CollectionChanged += (s, e) => {
         OnPropertyChanged("DaysReadable");
     };
     NavigateToAlarm = new DelegateCommand <AlarmModel>(alarm => {
         var queryParams = new Dictionary <string, string>();
         queryParams.Add(PageParams.ENDPOINT, Client.Session.Endpoint.Id);
         queryParams.Add(PageParams.ID, alarm.Id);
         PageNavigationService.Instance.NavigateWithQuery(PageNames.ALARM_EDIT, queryParams);
     });
     PlayOrStop = new AsyncDelegateCommand <AlarmModel>(alarm => alarm.PlayOrStopAlarm());
     SaveAlarm  = new AsyncDelegateCommand <AlarmModel>(alarm => alarm.Save());
 }
コード例 #9
0
        private object ChangedAlarmMessageHandler(VideoOS.Platform.Messaging.Message message, FQID dest, FQID source)
        {
            if (_viewMode != ViewMode.Alarm)
            {
                return(null);
            }

            if (InvokeRequired)
            {
                BeginInvoke(new MessageReceiver(ChangedAlarmMessageHandler), message, dest, source);
            }
            else
            {
                try
                {
                    ChangedAlarmData changedAlarmData = message.Data as ChangedAlarmData;
                    if (changedAlarmData != null)
                    {
                        switch (changedAlarmData.ChangeHint)
                        {
                        case ChangedAlarmData.ChangeHintSingleAlarm:
                            for (int ix = 0; ix < dataGridViewAlarm.Rows.Count; ix++)
                            {
                                Alarm alarm = dataGridViewAlarm.Rows[ix].Tag as Alarm;
                                if (alarm != null && alarm.EventHeader.ID == changedAlarmData.AlarmId)
                                {
                                    IAlarmClient alarmClient = LookupAlarmClient(alarm.EventHeader.Source.FQID);
                                    Alarm        newAlarm    = alarmClient.Get(alarm.EventHeader.ID);
                                    dataGridViewAlarm.Rows[ix].Tag            = newAlarm;
                                    dataGridViewAlarm.Rows[ix].Cells[3].Value = "" + newAlarm.EventHeader.Priority;
                                    dataGridViewAlarm.Rows[ix].Cells[4].Value = "" + newAlarm.State;
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    EnvironmentManager.Instance.ExceptionDialog("MessageHandler", ex);
                }
            }
            return(null);
        }
コード例 #10
0
 private void buttonCompleted_Click(object sender, EventArgs e)
 {
     if (_selectedRow != null)
     {
         Alarm alarm = _selectedRow.Tag as Alarm;
         if (alarm != null)
         {
             try
             {
                 IAlarmClient alarmClient = LookupAlarmClient(alarm.EventHeader.Source.FQID);
                 alarmClient.UpdateAlarm(alarm.EventHeader.ID, "Operator Closed Alarm", 11, alarm.EventHeader.Priority, DateTime.UtcNow, null);
             }
             catch (Exception ex)
             {
                 EnvironmentManager.Instance.ExceptionDialog("MessageHandler", ex);
             }
         }
     }
 }
コード例 #11
0
 private void buttonInprogress_Click(object sender, EventArgs e)
 {
     if (_selectedRow != null)
     {
         Alarm alarm = _selectedRow.Tag as Alarm;
         if (alarm != null)
         {
             try
             {
                 IAlarmClient alarmClient = LookupAlarmClient(alarm.EventHeader.Source.FQID);
                 alarmClient.UpdateAlarm(alarm.EventHeader.ID, "Operator changed to InProgress", 4, 1, DateTime.UtcNow, "");
             }
             catch (Exception ex)
             {
                 EnvironmentManager.Instance.ExceptionDialog("MessageHandler", ex);
             }
         }
     }
 }
コード例 #12
0
        private void loadClientAnalytics()
        {
            try
            {
                IAlarmClient alarmClient = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);

                EventLine[] events = alarmClient.GetEventLines(0, 10,
                                                               new VideoOS.Platform.Proxy.Alarm.EventFilter()
                {
                    Conditions = new Condition[] { new Condition()
                                                   {
                                                       Operator = Operator.NotEquals, Target = Target.Type, Value = "System Event"
                                                   } }
                });


                foreach (EventLine line in events)
                {
                    BaseEvent       baseevent = alarmClient.GetEvent(line.Id);
                    DataGridViewRow row       = new DataGridViewRow();
                    row.Tag = baseevent;

                    AnalyticsEvent aEvent = baseevent as AnalyticsEvent;
                    if (aEvent != null)
                    {
                        row.CreateCells(
                            dataGridViewAlarm,
                            baseevent.EventHeader.Type,
                            line.ObjectValue,
                            baseevent.EventHeader.Message,
                            line.CustomTag,
                            line.Timestamp.ToLocalTime(),
                            line.SourceName);
                        dataGridViewAlarm.Rows.Add(row);
                    }
                }
            }
            catch (Exception ex)
            {
                EnvironmentManager.Instance.ExceptionDialog("loading Analytics", ex);
            }
        }
コード例 #13
0
        private void loadClientLPR()
        {
            try
            {
                IAlarmClient alarmClient = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);

                EventLine[] events = alarmClient.GetEventLines(0, 10,
                                                               new VideoOS.Platform.Proxy.Alarm.EventFilter()
                {
                    Conditions = new Condition[] { new Condition()
                                                   {
                                                       Operator = Operator.Equals, Target = Target.Type, Value = "LPR Event"
                                                   } }
                });


                foreach (EventLine line in events)
                {
                    BaseEvent       baseevent = alarmClient.GetEvent(line.Id);
                    DataGridViewRow row       = new DataGridViewRow();
                    row.Tag = baseevent;
                    AnalyticsEvent aEvent = baseevent as AnalyticsEvent;
                    if (aEvent != null)
                    {
                        string oValue      = "";
                        string oConfidence = "";
                        if (aEvent.ObjectList != null && aEvent.ObjectList.Count > 0)
                        {
                            oValue      = aEvent.ObjectList[0].Value ?? "";
                            oConfidence = aEvent.ObjectList[0].Confidence.ToString("F5");
                        }
                        row.CreateCells(dataGridViewAlarm, aEvent.EventHeader.Type, oValue, oConfidence, aEvent.EventHeader.CustomTag, aEvent.EventHeader.Timestamp.ToLocalTime(), aEvent.EventHeader.Source.Name);
                        dataGridViewAlarm.Rows.Add(row);
                    }
                }
            }
            catch (Exception ex)
            {
                EnvironmentManager.Instance.ExceptionDialog("loading LPR Analytics", ex);
            }
        }
コード例 #14
0
        private void CreatePlaybackDictionary(ImageViewerAddOn imageViewerAddOn, DateTime videoTime)
        {
            CachedOverlayObjects coo;

            if (!_dicAddOnOverlayObjectsPlayback.TryGetValue(imageViewerAddOn, out coo) || coo.StartTime > videoTime || coo.EndTime < videoTime)
            {
                DateTime startDatetime = videoTime.AddMilliseconds(-_startCache);
                DateTime endDatetime   = videoTime.AddMilliseconds(_endCache);
                if (endDatetime > DateTime.Now)
                {
                    endDatetime = DateTime.Now;
                }

                EventLine[] analyticsEventLines = GetAnalyticsEventList(startDatetime, endDatetime);
                if (analyticsEventLines.Length == 0)
                {
                    return;
                }

                CachedOverlayObjects overlayObjectList = new CachedOverlayObjects();
                overlayObjectList.OverlayObjectList = new List <OverlayObject>();
                overlayObjectList.StartTime         = startDatetime;
                overlayObjectList.EndTime           = endDatetime;

                AlarmClientManager _alarmClientManager = new AlarmClientManager();
                IAlarmClient       alarmClient         = _alarmClientManager.GetAlarmClient(EnvironmentManager.Instance.MasterSite.ServerId);

                foreach (EventLine ev in analyticsEventLines)
                {
                    BaseEvent baseevent = alarmClient.GetEvent(ev.Id);
                    overlayObjectList.OverlayObjectList.Add(new OverlayObject(baseevent, ev.Timestamp));
                }
                if (_dicAddOnOverlayObjectsPlayback.ContainsKey(imageViewerAddOn))
                {
                    _dicAddOnOverlayObjectsPlayback.Remove(imageViewerAddOn);
                }
                _dicAddOnOverlayObjectsPlayback.Add(imageViewerAddOn, overlayObjectList);
            }
        }