Beispiel #1
0
        /// <summary>
        /// Called by TaskGroup when finishing its tasks, always on main thread
        /// </summary>
        /// <param name="timePair"></param>
        /// <returns></returns>
        internal int PopFinalizationCounter(PTTimePair timePair)
        {
            var count = m_counters[timePair];

            m_counters[timePair] = 0;
            return(count);
        }
Beispiel #2
0
 public PTTask AddTask(PTTimePair timePair, PTTask task)
 {
     task.EndTime = timePair;
     m_tasks.Add(task);
     m_subscriber.Subscribe();
     m_controller.SubscribeFinalizer(timePair);
     return(task);
 }
Beispiel #3
0
 public Subscriber(Action handler, PTTimePair currentTime, IPTSynchronizer synchronizer)
 {
     subscribed         = false;
     m_handler          = handler;
     m_currentTime      = currentTime;
     m_synchronizer     = synchronizer;
     m_synchronizerName = synchronizer.ToString();
 }
 public void Enqueue(PTTimePair endTime, PTThreadTask task)
 {
     lock (m_lock)
     {
         m_queue.Enqueue(endTime, task);
         Monitor.Pulse(m_lock);
     }
 }
Beispiel #5
0
 public PTTask(PTTimePair endTime, Func <object> initialize, Func <object, object> main, Action <object> finalize, uint period = 1)
 {
     this.EndTime    = endTime;
     this.initialize = initialize;
     this.main       = main;
     this.finalize   = finalize;
     this.period     = period;
     m_counter       = period;
 }
Beispiel #6
0
 public PTTaskGroup(IPTSynchronizer synchronizer, PTTimePair timePair, PTController controller)
 {
     m_subscriber    = new Subscriber(HandleTasks, timePair, synchronizer);
     m_timePair      = timePair;
     m_lock          = new object();
     m_tasks         = new List <PTTask>();
     m_tasksToFinish = new Queue <PTThreadTask>();
     m_controller    = controller;
 }
Beispiel #7
0
        public static PTThreadTask Borrow(PTTimePair endTime, PTTask task)
        {
            var ttask = s_pool.Borrow();

            ttask.initialize = task.initialize;
            ttask.main       = task.main;
            ttask.finalize   = task.finalize;
            ttask.EndTime    = endTime;
            return(ttask);
        }
Beispiel #8
0
        public static PTTask Borrow(PTTimePair endTime, Func <object> initialize, Func <object, object> main, Action <object> finalize, uint period = 1)
        {
            var task = s_pool.Borrow();

            task.initialize = initialize;
            task.main       = main;
            task.finalize   = finalize;
            task.period     = period;
            task.EndTime    = endTime;
            task.m_counter  = 1;
            return(task);
        }
Beispiel #9
0
 internal void UnsubscribeFinalizer(PTTimePair timePair)
 {
     Tasks[timePair].UnsubscribeFinalizer();
 }
Beispiel #10
0
 public PTTask AddTask(PTTimePair endTime, Func <object, object> main, uint period = 1)
 {
     return(AddTask(endTime, PTTask.Borrow(endTime, null, main, null, period)));
 }
Beispiel #11
0
 /// <summary>
 /// Only ever called from TaskGroup.EndTasks(), threadpool has the lock
 /// </summary>
 /// <param name="timePair"></param>
 public void SetPriority(PTTimePair timePair)
 {
     m_threadPool.Prioritize(timePair);
 }
Beispiel #12
0
 public static void Unsubscribe(PTTimePair timePair, Action handler)
 {
     PTAddon.Instance.Synchronizers[timePair.EventTime].Unsubscribe(timePair.UpdateEvent, handler);
 }
Beispiel #13
0
 private PTThreadTask Dequeue(PTTimePair endTime)
 {
     m_count--;
     return(m_tasks[endTime].Dequeue());
 }
Beispiel #14
0
 internal void Enqueue(PTTimePair endTime, PTThreadTask task)
 {
     m_tasks[endTime].Enqueue(task);
     m_count++;
 }
Beispiel #15
0
 public static PTTask AddTask(PTTimePair startTime, PTTimePair endTime, Func <object, object> task, uint period = 1)
 {
     return(PTAddon.Instance.Controller.Tasks[startTime].AddTask(endTime, task, period));
 }
Beispiel #16
0
 public static string ToName(PTTimePair value)
 {
     return(s_nameMap[value]);
 }
Beispiel #17
0
 public static PTTask AddTask(PTTimePair startTime, PTTimePair endTime, Func <object> initializer, Func <object, object> task, Action <object> finalizer, uint period = 1)
 {
     return(PTAddon.Instance.Controller.Tasks[startTime].AddTask(endTime, initializer, task, finalizer, period));
 }
Beispiel #18
0
 public static bool SubscriptionStatus(PTTimePair taskGroup)
 {
     return(PTAddon.Instance.Controller.Tasks[taskGroup].SubscriptionStatus);
 }
Beispiel #19
0
 public static PTTask AddTask(PTTimePair startTime, PTTimePair endTime, PTTask task)
 {
     return(PTAddon.Instance.Controller.Tasks[startTime].AddTask(endTime, task));
 }
Beispiel #20
0
 public static bool RemoveTask(PTTimePair startTime, Func <object, object> task)
 {
     return(PTAddon.Instance.Controller.Tasks[startTime].RemoveTask(task));
 }
Beispiel #21
0
 public void Prioritize(PTTimePair eventTime)
 {
     m_queue.Priority = eventTime;
 }
Beispiel #22
0
 public PTTask AddTask(PTTimePair endTime, Func <object> initialize, Func <object, object> main, Action <object> finalize, uint period = 1)
 {
     return(AddTask(endTime, PTTask.Borrow(endTime, initialize, main, finalize, period)));
 }
Beispiel #23
0
 public static void ClearTasks(PTTimePair startTime)
 {
     PTAddon.Instance.Controller.Tasks[startTime].ClearTasks();
 }