Ejemplo n.º 1
0
        public static void ExecuteSystemTrigger(string referenceId, string triggerNamespace, TriggerEventArgs eventArgs)
        {
            //
            IDataReader dr = null;

            try
            {
                ES.TaskManager.StartTask(SystemTasks.SOURCE_ECOMMERCE, SystemTasks.TASK_EXEC_SYSTEM_TRIGGER);

                List <ITriggerHandler> triggers = new List <ITriggerHandler>();
                dr = EcommerceProvider.GetSystemTrigger(ES.SecurityContext.User.UserId, referenceId, triggerNamespace);
                //
                while (dr.Read())
                {
                    int    ownerId        = Convert.ToInt32(dr["OwnerID"]);
                    string triggerId      = Convert.ToString(dr["TriggerID"]);
                    string triggerHandler = Convert.ToString(dr["TriggerHandler"]);
                    string triggerStatus  = (dr["Status"] == DBNull.Value) ? null : Convert.ToString(dr["Status"]);
                    // Instantiate trigger handler
                    ITriggerHandler trigger = (ITriggerHandler)Activator.CreateInstance(Type.GetType(triggerHandler));
                    //
                    trigger.TriggerId     = triggerId;
                    trigger.OwnerId       = ownerId;
                    trigger.TriggerStatus = triggerStatus;
                    trigger.ReferenceId   = referenceId;
                    //
                    triggers.Add(trigger);
                    //
                }
                dr.Close();
                //
                foreach (ITriggerHandler trigger in triggers)
                {
                    try
                    {
                        trigger.ExecuteTrigger(eventArgs);
                    }
                    catch (Exception ex)
                    {
                        ES.TaskManager.WriteError(ex);
                        continue;
                    }
                    //
                    DeleteSystemTrigger(trigger.TriggerId);
                }
            }
            catch (Exception ex)
            {
                throw ES.TaskManager.WriteError(ex);
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
                //
                ES.TaskManager.CompleteTask();
            }
        }
Ejemplo n.º 2
0
        public void SetCanceled(CancellationToken cancellationToken)
        {
            isRunning = true;

            if (singleHandler != null)
            {
                try
                {
                    (singleHandler).OnCanceled(cancellationToken);
                }
                catch (Exception ex)
                {
#if UNITY_2018_3_OR_NEWER
                    UnityEngine.Debug.LogException(ex);
#else
                    Console.WriteLine(ex);
#endif
                }
            }

            if (handlers != null)
            {
                for (int i = 0; i < handlers.Length; i++)
                {
                    if (handlers[i] != null)
                    {
                        try
                        {
                            (handlers[i]).OnCanceled(cancellationToken);
                        }
                        catch (Exception ex)
                        {
#if UNITY_2018_3_OR_NEWER
                            UnityEngine.Debug.LogException(ex);
#else
                            Console.WriteLine(ex);
#endif
                            handlers[i] = null;
                        }
                    }
                }
            }

            isRunning = false;

            if (waitHandler != null)
            {
                var h = waitHandler;
                waitHandler = null;
                Add(h);
            }

            if (waitQueue != null)
            {
                while (waitQueue.Count != 0)
                {
                    Add(waitQueue.Dequeue());
                }
            }
        }
Ejemplo n.º 3
0
        public void SetResult(T value)
        {
            isRunning = true;

            if (singleHandler != null)
            {
                try
                {
                    singleHandler.OnNext(value);
                }
                catch (Exception ex)
                {
#if UNITY_2018_3_OR_NEWER
                    UnityEngine.Debug.LogException(ex);
#else
                    Console.WriteLine(ex);
#endif
                }
            }

            if (handlers != null)
            {
                for (int i = 0; i < handlers.Length; i++)
                {
                    if (handlers[i] != null)
                    {
                        try
                        {
                            handlers[i].OnNext(value);
                        }
                        catch (Exception ex)
                        {
                            handlers[i] = null;
#if UNITY_2018_3_OR_NEWER
                            UnityEngine.Debug.LogException(ex);
#else
                            Console.WriteLine(ex);
#endif
                        }
                    }
                }
            }

            isRunning = false;

            if (waitHandler != null)
            {
                var h = waitHandler;
                waitHandler = null;
                Add(h);
            }

            if (waitQueue != null)
            {
                while (waitQueue.Count != 0)
                {
                    Add(waitQueue.Dequeue());
                }
            }
        }
Ejemplo n.º 4
0
        public string InitIO(string port)
        {
            var initLogString = $"{Utility.PluginName} MainPlugin InitIo started";

            Console.WriteLine(initLogString);
            _logging.Log(initLogString);
            _config = new MainConfig(_logging, _hs, _iniSettings, _callback, this);
            _config.RegisterConfigs();

            _callback.RegisterEventCB(Enums.HSEvent.VALUE_CHANGE, Utility.PluginName, "");

            _logging.Log($"Done creating configs");
            _iniSettings.IniSettingsChanged += _logging.IniSettingHasChanged;
            _homeSeerHandler = new HomeSeerHandler(_hs, _logging);
            _logging.Log($"Done creating HomeSeerHandler");

            _storageHandler = new StorageHandler(_logging, _iniSettings);
            _logging.Log($"Done creating StorageHandler");

            _triggerHandler = new TriggerHandler(_hs, _callback, _iniSettings, _logging, _collectionFactory, _homeSeerHandler, _storageHandler);
            _logging.Log($"Done creating _triggerHandler ");

            //_callback.RegisterEventCB(Enums.HSEvent.CONFIG_CHANGE, Utility.PluginName, "");
            //Register callback on every event of value change. This is the method to find if this is a value of a device we are following

            _logging.Log($"Done registering callback");
            _logging.Log($"{Utility.PluginName} MainPlugin InitIo Complete");
            return("");
        }
Ejemplo n.º 5
0
        public void SetCanceled(CancellationToken cancellationToken)
        {
            if (iteratingNode != null)
            {
                throw new InvalidOperationException("Can not trigger itself in iterating.");
            }

            var h = head;

            while (h != null)
            {
                iteratingNode = h;
                try
                {
                    h.OnCanceled(cancellationToken);
                }
                catch (Exception ex)
                {
                    LogError(ex);
                }

                preserveRemoveSelf = false;
                iteratingNode      = null;
                var next = h.Next;
                Remove(h);
                h = next;
            }

            iteratingNode = null;
            if (iteratingHead != null)
            {
                Add(iteratingHead);
                iteratingHead = null;
            }
        }
Ejemplo n.º 6
0
        static void EnsureCapacity(ref ITriggerHandler <T>[] array)
        {
            var newSize  = array.Length * 2;
            var newArray = new ITriggerHandler <T> [newSize];

            Array.Copy(array, 0, newArray, 0, array.Length);
            array = newArray;
        }
Ejemplo n.º 7
0
        public static void AddSystemTrigger(string referenceId, string triggerStatus, Type triggerType)
        {
            //
            ITriggerHandler trigger = (ITriggerHandler)Activator.CreateInstance(triggerType);

            //
            EcommerceProvider.AddSystemTrigger(ES.SecurityContext.User.UserId, ES.SecurityContext.User.UserId,
                                               triggerType.AssemblyQualifiedName, referenceId, trigger.TriggerNamespace, triggerStatus);
        }
Ejemplo n.º 8
0
        internal void RemoveHandler(ITriggerHandler <T> handler)
        {
            if (!calledAwake)
            {
                PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, new AwakeMonitor(this));
            }

            triggerEvent.Remove(handler);
        }
Ejemplo n.º 9
0
        public void Add(ITriggerHandler <T> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            // zero node.
            if (head == null)
            {
                head = handler;
                return;
            }

            if (iteratingNode != null)
            {
                if (iteratingHead == null)
                {
                    iteratingHead = handler;
                    return;
                }

                var last = iteratingHead.Prev;
                if (last == null)
                {
                    // single node.
                    iteratingHead.Prev = handler;
                    iteratingHead.Next = handler;
                    handler.Prev       = iteratingHead;
                }
                else
                {
                    // multi node
                    iteratingHead.Prev = handler;
                    last.Next          = handler;
                    handler.Prev       = last;
                }
            }
            else
            {
                var last = head.Prev;
                if (last == null)
                {
                    // single node.
                    head.Prev    = handler;
                    head.Next    = handler;
                    handler.Prev = head;
                }
                else
                {
                    // multi node
                    head.Prev    = handler;
                    last.Next    = handler;
                    handler.Prev = last;
                }
            }
        }
Ejemplo n.º 10
0
 private void ExecuteTriggerHandler(ITriggerHandler triggerHandler, Trigger trigger, IGameState next)
 {
     try
     {
         triggerHandler.Handle(trigger, next);
     }
     catch (Exception e)
     {
         Logger.AppendLine($"Error handling triggerHandler:{triggerHandler.GetType()}");
         Logger.AppendLine(e.ToString());
     }
 }
Ejemplo n.º 11
0
        public void Add(ITriggerHandler <T> handler)
        {
            if (isRunning)
            {
                if (waitHandler == null)
                {
                    waitHandler = handler;
                    return;
                }

                if (waitQueue == null)
                {
                    waitQueue = new MinimumQueue <ITriggerHandler <T> >(4);
                }
                waitQueue.Enqueue(handler);
                return;
            }

            if (singleHandler == null)
            {
                singleHandler = handler;
            }
            else
            {
                if (handlers == null)
                {
                    handlers = new ITriggerHandler <T> [4];
                }

                // check empty
                for (int i = 0; i < handlers.Length; i++)
                {
                    if (handlers[i] == null)
                    {
                        handlers[i] = handler;
                        return;
                    }
                }

                // full, ensure capacity
                var last = handlers.Length;
                {
                    EnsureCapacity(ref handlers);
                    handlers[last] = handler;
                }
            }
        }
Ejemplo n.º 12
0
        protected virtual void Start()
        {
            if (AudioSource != null)
            {
                AudioSource.Play();
            }

            // precalculate so we can multiply instead of divide every frame
            stopTimeMultiplier  = 1.0f / StopTime;
            startTimeMultiplier = 1.0f / StartTime;

            // if this effect has an explosion force, apply that now
            CreateExplosion(gameObject.transform.position, ForceRadius, ForceAmount);

            // start any particle system that is not in the list of manual start particle systems
            StartParticleSystems();

            // If we implement the ICollisionHandler interface, see if any of the children are forwarding
            // collision events. If they are, hook into them.
            ICollisionHandler handler = (this as ICollisionHandler);

            if (handler != null)
            {
                FireCollisionForwardScript collisionForwarder = GetComponentInChildren <FireCollisionForwardScript>();
                if (collisionForwarder != null)
                {
                    collisionForwarder.CollisionHandler = handler;
                }
            }



            // If we implement the ITriggerHandler interface, see if any of the children are forwarding
            // collision events. If they are, hook into them.
            ITriggerHandler triggerHandler = (this as ITriggerHandler);

            if (triggerHandler != null)
            {
                TriggerForwardScript triggerForwarder = GetComponentInChildren <TriggerForwardScript>();
                if (triggerForwarder != null)
                {
                    triggerForwarder.TriggerHandler = triggerHandler;
                }
            }
        }
Ejemplo n.º 13
0
        public void SetResult(T value)
        {
            if (iteratingNode != null)
            {
                throw new InvalidOperationException("Can not trigger itself in iterating.");
            }

            var h = head;

            while (h != null)
            {
                iteratingNode = h;

                try
                {
                    h.OnNext(value);
                }
                catch (Exception ex)
                {
                    LogError(ex);
                    Remove(h);
                }

                if (preserveRemoveSelf)
                {
                    preserveRemoveSelf = false;
                    iteratingNode      = null;
                    var next = h.Next;
                    Remove(h);
                    h = next;
                }
                else
                {
                    h = h.Next;
                }
            }

            iteratingNode = null;
            if (iteratingHead != null)
            {
                Add(iteratingHead);
                iteratingHead = null;
            }
        }
Ejemplo n.º 14
0
 public void Remove(ITriggerHandler <T> handler)
 {
     if (singleHandler == handler)
     {
         singleHandler = null;
     }
     else
     {
         if (handlers != null)
         {
             for (int i = 0; i < handlers.Length; i++)
             {
                 if (handlers[i] == handler)
                 {
                     // fill null.
                     handlers[i] = null;
                     return;
                 }
             }
         }
     }
 }
Ejemplo n.º 15
0
        public static ITrigger Get(IHSApplication hs, string triggerType, ILogging logging, ITriggerHandler triggerHandler, IAppCallbackAPI callback, IHsCollectionFactory collectionFactory, IHomeSeerHandler homeSeerHandler)
        {
            switch (triggerType)
            {
            case "DataCurveSeer.TriggerHandling.Triggers.DataCurveTrigger":
                return(new DataCurveTrigger(hs, logging, collectionFactory, homeSeerHandler));

            case "DataCurveSeer.TriggerHandling.Triggers.DataCurveTriggerB.DataCurveTriggerB":
                return(new DataCurveTrigger(hs, logging, collectionFactory, homeSeerHandler));

            default:
                logging.Log($"Could not find any match for {triggerType}. Alert the creator and tell him to check for errors.");
                break;
            }

            return(null);
        }
Ejemplo n.º 16
0
        public void Remove(ITriggerHandler <T> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            if (iteratingNode != null && iteratingNode == handler)
            {
                // if remove self, reserve remove self after invoke completed.
                preserveRemoveSelf = true;
            }
            else
            {
                var prev = handler.Prev;
                var next = handler.Next;

                if (next != null)
                {
                    next.Prev = prev;
                }

                if (handler == head)
                {
                    head = next;
                }
                else if (handler == iteratingHead)
                {
                    iteratingHead = next;
                }
                else
                {
                    // when handler is head, prev indicate last so don't use it.
                    if (prev != null)
                    {
                        prev.Next = next;
                    }
                }

                if (head != null)
                {
                    if (head.Prev == handler)
                    {
                        if (prev != head)
                        {
                            head.Prev = prev;
                        }
                        else
                        {
                            head.Prev = null;
                        }
                    }
                }

                if (iteratingHead != null)
                {
                    if (iteratingHead.Prev == handler)
                    {
                        if (prev != iteratingHead.Prev)
                        {
                            iteratingHead.Prev = prev;
                        }
                        else
                        {
                            iteratingHead.Prev = null;
                        }
                    }
                }

                handler.Prev = null;
                handler.Next = null;
            }
        }