示例#1
0
        /// <summary>
        /// Determine if a task can be added to a schedule at the new start time
        /// </summary>
        /// <param name="newAccessList"></param>
        /// <param name="newTaskStartTime"></param>
        /// <returns></returns>
        public bool CanAddTasks(Stack <Access> newAccessList, double newTaskStartTime)
        {
            int count = 0;

            foreach (var access in newAccessList)
            {
                if (!AllStates.isEmpty(access.Asset))
                {
                    if (AllStates.GetLastEvent().GetEventEnd(access.Asset) > newTaskStartTime)
                    {
                        return(false);
                    }
                }

                if (access.Task != null)
                {
                    count += AllStates.timesCompletedTask(access.Task);
                    if (count >= access.Task.MaxTimesToPerform)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
示例#2
0
        public bool CanAddTasks(Stack <Access> newAccessList, double newTaskStartTime)
        {
            //TODO: Mehiel double check
            //HSF v2.3:
            //size_t count = 0;
            //vector<assetSchedule*>::iterator asIt2 = assetscheds.begin();
            //for (vector <const Task*>::const_iterator tIt = newTaskList.begin(); tIt != newTaskList.end(); tIt++, asIt2++) {
            //    if (*tIt != NULL)
            //    {
            //        for (vector<assetSchedule*>::iterator asIt = assetscheds.begin(); asIt != assetscheds.end(); asIt++)
            //        {
            //            count += (*asIt)->timesCompletedTask(*tIt);
            //        }
            //        if (count >= (*tIt)->getMaxTimesPerformable())
            //            return false;
            //        if (!(*asIt2)->empty())
            //        {
            //            if ((*asIt2)->getLastState()->getEventEnd() > newTaskStartTime)
            //                return false;
            //        }
            //    }
            //}
            //return true;
            int count = 0;

            // vector<assetSchedule*>::iterator asIt2 = assetscheds.begin();
            //int asIt2 = 0;

            foreach (var access in newAccessList)
            {
                if (!AllStates.isEmpty(access.Asset)) // the ait2 check
                {
                    if (AllStates.GetLastEvent().GetEventEnd(access.Asset) > newTaskStartTime)
                    {
                        return(false);
                    }
                }

                if (access.Task != null)
                {
                    count += AllStates.timesCompletedTask(access.Task);
                    if (count >= access.Task.MaxTimesToPerform)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }