Esempio n. 1
0
        private object TriggerReceiver(VideoOS.Platform.Messaging.Message message, FQID dest, FQID sender)
        {
            try
            {
                if (dest != null && dest.Kind == _kind)
                {
                    string userSID = "";
                    if (sender != null && sender.Kind == Kind.User)
                    {
                        userSID = sender.ObjectIdString;                                                        // Get hold of the user executing the command
                    }
                    String command = message.Data as String;
                    Item   item    = GetItem(dest);
                    if (command != null && item != null)
                    {
                        if (command == "POWEROFF")
                        {
                            EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor- Building poweroff Event " + command, null);
                            if (userSID == null)
                            {
                                SecurityAccess.CheckPermission(item, command);
                            }
                            else
                            {
                                SecurityAccess.CheckPermission(item, command, userSID);
                            }

                            if (_downItems.Contains(item.FQID.ObjectId) == false)
                            {
                                _downItems.Add(item.FQID.ObjectId);
                            }
                            Item controller = GetItem(dest);
                            if (controller.Properties.ContainsKey("RelatedEventFQID") && controller.Properties.ContainsKey("RelatedFQID"))
                            {
                                FQID    cameraFqid = new FQID(controller.Properties["RelatedFQID"]);
                                FQID    eventFqid  = new FQID(controller.Properties["RelatedEventFQID"]);
                                Message mes        = new Message(MessageId.Control.TriggerCommand, cameraFqid);
                                EnvironmentManager.Instance.PostMessage(mes, eventFqid, cameraFqid);
                            }
                            FQID cameraFQID = null;
                            if (item.Properties.ContainsKey("RelatedFQID"))
                            {
                                cameraFQID = new FQID(item.Properties["RelatedFQID"]);
                            }
                            EventHeader eventHeader = new EventHeader()
                            {
                                ID        = Guid.NewGuid(),
                                Class     = "Operational",
                                Type      = "Power",
                                Timestamp = DateTime.Now,
                                Message   = ControllerDownMessage,
                                Name      = item.Name,
                                Source    = new EventSource {
                                    FQID = item.FQID, Name = item.Name
                                },
                                CustomTag = "<My><MiniXml>With no data-1</MiniXml></My>"
                            };
                            AnalyticsEvent eventData = new AnalyticsEvent
                            {
                                EventHeader = eventHeader,
                            };
                            if (cameraFQID != null)
                            {
                                eventData.ReferenceList = new ReferenceList();
                                eventData.ReferenceList.Add(new Reference()
                                {
                                    FQID = cameraFQID
                                });                                                                                                             // Ensure that camera will be presented in the preview
                            }
                            EnvironmentManager.Instance.SendMessage(new VideoOS.Platform.Messaging.Message(MessageId.Server.NewEventCommand)
                            {
                                Data = eventData, RelatedFQID = cameraFQID
                            });
                            EventServerControl.Instance.ItemStatusChanged(item);
                        }
                        if (command == "POWERON")
                        {
                            EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor- Building poweron Event " + command, null);
                            if (userSID == null)
                            {
                                SecurityAccess.CheckPermission(item, command);
                            }
                            else
                            {
                                SecurityAccess.CheckPermission(item, command, userSID);
                            }

                            EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor- Building poweron event ", null);
                            if (_downItems.Contains(item.FQID.ObjectId))
                            {
                                _downItems.Remove(item.FQID.ObjectId);
                            }
                            FQID cameraFQID = null;
                            if (item.Properties.ContainsKey("RelatedFQID"))
                            {
                                cameraFQID = new FQID(item.Properties["RelatedFQID"]);
                            }
                            EventHeader eventHeader = new EventHeader
                            {
                                ID        = Guid.NewGuid(),
                                Class     = "Operational",
                                Type      = "Power",
                                Timestamp = DateTime.Now,
                                Message   = ControllerUpMessage,
                                Name      = item.Name,
                                Source    = new EventSource {
                                    FQID = item.FQID, Name = item.Name
                                },
                                CustomTag = "<My><MiniXml>With no data-2</MiniXml></My>"
                            };
                            AnalyticsEvent eventData = new AnalyticsEvent
                            {
                                EventHeader = eventHeader,
                            };
                            if (cameraFQID != null)
                            {
                                eventData.ReferenceList = new ReferenceList();
                                eventData.ReferenceList.Add(new Reference()
                                {
                                    FQID = cameraFQID
                                });                                                                                                             // Ensure that camera will be presented in the preview
                            }

                            EnvironmentManager.Instance.SendMessage(new VideoOS.Platform.Messaging.Message(MessageId.Server.NewEventCommand)
                            {
                                Data = eventData, RelatedFQID = cameraFQID
                            });

                            EventServerControl.Instance.ItemStatusChanged(item);
                        }
                        if (command == "STARTREC")
                        {
                            EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor- Building start recording Event " + command, null);
                            Item controller = GetItem(dest);
                            if (controller.Properties.ContainsKey("RelatedFQID"))
                            {
                                FQID fqid = new FQID(controller.Properties["RelatedFQID"]);
                                EnvironmentManager.Instance.SendMessage(
                                    new VideoOS.Platform.Messaging.Message(MessageId.Control.StartRecordingCommand), fqid);

                                EventHeader eventHeader = new EventHeader
                                {
                                    ID        = Guid.NewGuid(),
                                    Class     = "Operationel",
                                    Type      = "UserCommand",
                                    Timestamp = DateTime.Now,
                                    Message   = StartRecordingMessage,
                                    Name      = item.Name,
                                    Source    = new EventSource {
                                        FQID = item.FQID, Name = item.Name
                                    },
                                    CustomTag = "<My><MiniXml>With no data-3</MiniXml></My>"
                                };
                                AnalyticsEvent eventData = new AnalyticsEvent
                                {
                                    EventHeader = eventHeader,
                                };
                                eventData.ReferenceList = new ReferenceList();
                                eventData.ReferenceList.Add(new Reference()
                                {
                                    FQID = fqid
                                });                                                                                                     // Ensure that camera will be presented in the preview

                                // We inform the rest of the Event Server, that this command has been issued (In case there is a AlarmDefinition that matches)
                                EnvironmentManager.Instance.SendMessage(new VideoOS.Platform.Messaging.Message(MessageId.Server.NewEventCommand)
                                {
                                    Data = eventData, RelatedFQID = fqid
                                });
                            }
                        }
                        if (command == "STOPREC")
                        {
                            EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor- Building stop recording Event " + command, null);
                            Item controller = GetItem(dest);
                            if (controller.Properties.ContainsKey("RelatedFQID"))
                            {
                                FQID fqid = new FQID(controller.Properties["RelatedFQID"]);
                                EnvironmentManager.Instance.SendMessage(
                                    new VideoOS.Platform.Messaging.Message(MessageId.Control.StopRecordingCommand), fqid);

                                EventHeader eventHeader = new EventHeader
                                {
                                    ID        = Guid.NewGuid(),
                                    Class     = "Operationel",
                                    Type      = "UserCommand",
                                    Timestamp = DateTime.Now,
                                    Message   = StopRecordingMessage,
                                    Name      = item.Name,
                                    Source    = new EventSource {
                                        FQID = item.FQID, Name = item.Name
                                    },
                                    CustomTag = "<My><MiniXml>With no data-3</MiniXml></My>"
                                };
                                AnalyticsEvent eventData = new AnalyticsEvent
                                {
                                    EventHeader = eventHeader,
                                };
                                eventData.ReferenceList = new ReferenceList();
                                eventData.ReferenceList.Add(new Reference()
                                {
                                    FQID = fqid
                                });                                                                                                     // Ensure that camera will be presented in the preview

                                // We inform the rest of the Event Server, that this command has been issued (In case there is a AlarmDefinition that matches)
                                EnvironmentManager.Instance.SendMessage(new VideoOS.Platform.Messaging.Message(MessageId.Server.NewEventCommand)
                                {
                                    Data = eventData, RelatedFQID = fqid
                                });
                            }
                        }
                        if (command == "TRIGGEREVENT")
                        {
                            EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor- Building trigger Event " + command, null);
                            Item controller = GetItem(dest);
                            if (controller.Properties.ContainsKey("RelatedEventFQID") && controller.Properties.ContainsKey("RelatedFQID"))
                            {
                                FQID    cameraFqid = new FQID(controller.Properties["RelatedFQID"]);
                                FQID    eventFqid  = new FQID(controller.Properties["RelatedEventFQID"]);
                                Message mes        = new Message(MessageId.Control.TriggerCommand, cameraFqid);
                                EnvironmentManager.Instance.PostMessage(mes, eventFqid, cameraFqid);
                            }
                        }
                    }
                }
            }
            catch (NotAuthorizedMIPException)
            {
                throw;
            }
            catch (Exception ex)
            {
                EnvironmentManager.Instance.Log(false, "SensorMonitor", "SensorMonitor-9 " + ex.Message, new [] { ex });
                //User not authorized to perform the action
            }
            return(null);
        }
 private object ThemeChangedIndicationHandler(VideoOS.Platform.Messaging.Message message, FQID destination, FQID source)
 {
     Selected = _selected;
     return(null);
 }