Ejemplo n.º 1
0
        /// <summary>
        /// Removes the specified delegate from this list for the specified type
        /// </summary>
        /// <param name="key"></param>
        /// <param name="handler"></param>
        public void RemoveHandler(object key, Delegate handler)
        {
            EventListEntry exist = this.Find(key);

            if (null == exist)
            {
                exist.Handler = Delegate.Remove(exist.Handler, handler);
            }
        }
Ejemplo n.º 2
0
        //
        // public methods
        //

        #region public void AddHandler(object key, Delegate handler)

        /// <summary>
        /// Adds a delegate to this event list based on the specified key.
        /// </summary>
        /// <param name="key">The key that identifies the handler delegate type</param>
        /// <param name="handler">The delegate to add</param>
        public void AddHandler(object key, Delegate handler)
        {
            EventListEntry exist = this.Find(key);

            if (null == exist)
            {
                this._head = new EventListEntry(handler, key, this._head);
            }
            else
            {
                exist.Handler = Delegate.Combine(exist.Handler, handler);
            }
        }
Ejemplo n.º 3
0
        //
        // private implementation
        //

        #region private EventListEntry Find(object key)

        /// <summary>
        /// looks for an event list entry that matches the specified key
        /// </summary>
        /// <param name="key">The key to use</param>
        /// <returns>The matching entry, or null if no matching entry was found</returns>
        private EventListEntry Find(object key)
        {
            EventListEntry current = this._head;

            while (current != null)
            {
                if (current.Key == key)
                {
                    return(current);
                }

                current = current.Next;
            }
            return(current);
        }
Ejemplo n.º 4
0
        Scryber.IPDFComponent _owner; //The component that owns the events

        #endregion

        #region public Delegate this[object key] {get;}

        /// <summary>
        /// Gets the registered delegate based on the key if one exists.
        /// </summary>
        /// <param name="key">The object key the event is registered under</param>
        /// <returns>The associated Delegate method or null if one is not registered for the specified object</returns>
        public Delegate this[object key]
        {
            get
            {
                EventListEntry entry = null;
                if ((this._owner != null))
                {
                    entry = this.Find(key);
                }
                if (entry != null)
                {
                    return(entry.Handler);
                }
                return(null);
            }
        }
Ejemplo n.º 5
0
        public JToken Log(string id, JToken data)
        {
            var gid = new Guid(id);
            var obj = JablotronDataList.Create(data.ToString());
            var cx  = SmartHomeDBContext.Create(AppSettings);
            // get device detail, if there is no device we will throw exception
            var device   = cx.Jablotrons.Single(e => e.DeviceId == gid);
            var prevData = new JablotronData();

            for (int i = 0; i < obj.data.Length; i++)
            {
                var    itm     = obj.data[i];
                string newData = JsonConvert.SerializeObject(itm);
                if (!prevData.IsEqual(itm))
                {
                    var newEntryObj = new EventListEntry();
                    newEntryObj.Icon = "ALARM-" + itm.GetArmStateEx().ToString();
                    switch (itm.GetArmStateEx())
                    {
                    case AlarmStateEx.IDLE:
                        newEntryObj.Row1 = "Alarm OFF";
                        newEntryObj.Row2 = "";
                        break;

                    case AlarmStateEx.ARMED:
                        newEntryObj.Row1 = "Alarm ARMED";
                        newEntryObj.Row2 = "Zones: " + itm.armedzone;
                        break;

                    case AlarmStateEx.ALARM:
                        newEntryObj.Row1 = "ALARM";
                        newEntryObj.Row2 = "Zone: " + EventListEntry.DecodeDevice(itm.deviceid, AppSettings.JABLOTRONZONES);
                        break;
                    }
                    if (device.Note != newEntryObj.Serialize())
                    {
                        var entry = new EventList();
                        entry.DeviceId  = device.DeviceId;
                        entry.Created   = DateTime.Now;
                        entry.EventCode = newEntryObj.Icon;
                        entry.EventText = newEntryObj.Serialize();
                        cx.EventLists.Add(entry);
                        cx.SaveChanges();
                        device.Note = entry.EventText;
                    }

                    device.Contacted = itm.timestamp;
                    if (itm.commandexecuted != "")
                    {
                        device.CommandToExecute = "";
                    }
                    device.LED_A       = itm.led_a;
                    device.LED_B       = itm.led_b;
                    device.LED_C       = itm.led_c;
                    device.LED_Warning = itm.led_warning;
                    device.State       = itm.state;
                }
                cx.SaveChanges();
            }
            var ret = new JablotronResponse();

            ret.status           = "OK";
            ret.commandtoexecute = device.CommandToExecute;
            return(JObject.Parse(JsonConvert.SerializeObject(ret)));
        }
Ejemplo n.º 6
0
 internal EventListEntry(Delegate handler, object key, EventListEntry next)
 {
     this.Handler = handler;
     this.Key     = key;
     this.Next    = next;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Disposes of this event list
 /// </summary>
 public void Dispose()
 {
     _head  = null;
     _owner = null;
 }