/// <summary>
        /// Set task as completed
        /// </summary>
        public BaseResponse LogEndTaskExecution(SchedulerTaskType type)
        {
            SchedulerQueue schedulerQueue = Uow.SchedulerQueues.GetLastByType(type, SchedulerDestination);

            if (schedulerQueue != null)
            {
                Uow.SchedulerQueues.FinishAndChangeStatus(schedulerQueue, SchedulerExecutionStatus.Success);

                if (schedulerQueue.Dependencies != null)
                {
                    foreach (SchedulerTaskType schedulerTaskType in schedulerQueue.Dependencies)
                    {
                        SchedulerQueue item = Uow.SchedulerQueues.GetLastByType(schedulerTaskType, SchedulerDestination);
                        if (item != null)
                        {
                            long changedLockerMask = item.LockerMask & (~schedulerQueue.TaskType.GetLockerMask());
                            Uow.SchedulerQueues.ChangeLockerMask(item, changedLockerMask);
                        }
                    }
                }

                return(BaseResponse.Success());
            }

            return(BaseResponse.Error(ErrorCode.SchedulerQueueItemNotFound));
        }
Exemplo n.º 2
0
        public int Setup(int deviceId, DeviceType t, StreamType streamType,
                         int sampleRate, SampleFormatType format, int numChannels,
                         int dwChannelMask,
                         MMCSSCallType mmcssCall, MMThreadPriorityType threadPriority,
                         SchedulerTaskType schedulerTask, ShareMode shareMode, DataFeedMode dataFeedMode,
                         int latencyMillisec, int zeroFlushMillisec, int timePeriodHandredNanosec,
                         bool isFormatSupportedCall)
        {
            var args = new SetupArgs();

            args.deviceType               = (int)t;
            args.streamType               = (int)streamType;
            args.sampleRate               = sampleRate;
            args.sampleFormat             = (int)format;
            args.numChannels              = numChannels;
            args.dwChannelMask            = dwChannelMask;
            args.mmcssCall                = (int)mmcssCall;
            args.mmThreadPriority         = (int)threadPriority;
            args.schedulerTask            = (int)schedulerTask;
            args.shareMode                = (int)shareMode;
            args.dataFeedMode             = (int)dataFeedMode;
            args.latencyMillisec          = latencyMillisec;
            args.timePeriodHandledNanosec = timePeriodHandredNanosec;
            args.zeroFlushMillisec        = zeroFlushMillisec;
            args.isFormatSupportedCall    = isFormatSupportedCall ? 1 : 0;
            return(WasapiIO_Setup(mId, deviceId, ref args));
        }
Exemplo n.º 3
0
        public SchedulerQueue GetLastByType(SchedulerTaskType type, string destination)
        {
            SchedulerQueue schedulerQueue =
                GetAll()
                .Where(item => item.TaskType == type &&
                       item.Destination == destination &&
                       item.StopDate == null)
                .OrderByDescending(item => item.PlannedDate)
                .FirstOrDefault();

            return(schedulerQueue);
        }
        /// <summary>
        /// Set task as executing
        /// </summary>
        public BaseResponse LogStartTaskExecution(SchedulerTaskType type)
        {
            SchedulerQueue schedulerQueue = Uow.SchedulerQueues.GetLastByType(type, SchedulerDestination);

            if (schedulerQueue != null)
            {
                Uow.SchedulerQueues.StartAndChangeStatus(schedulerQueue, SchedulerExecutionStatus.Executing);

                return(BaseResponse.Success());
            }

            return(BaseResponse.Error(ErrorCode.SchedulerQueueItemNotFound));
        }
Exemplo n.º 5
0
        public List <SchedulerQueue> GetLastsByType(SchedulerTaskType type, string destination, int count)
        {
            List <SchedulerQueue> schedulerQueues =
                GetAll()
                .Where(item => item.TaskType == type &&
                       item.Destination == destination &&
                       item.Status != SchedulerExecutionStatus.Terminated)
                .OrderByDescending(item => item.PlannedDate)
                .Take(count)
                .ToList();

            return(schedulerQueues);
        }
        /// <summary>
        /// Set task as completed with exception
        /// </summary>
        public BaseResponse LogTaskException(SchedulerTaskType type, Exception exception)
        {
            SchedulerQueue schedulerQueue = Uow.SchedulerQueues.GetLastByType(type, SchedulerDestination);

            if (schedulerQueue != null)
            {
                Uow.SchedulerQueues.FinishAndChangeStatus(schedulerQueue, SchedulerExecutionStatus.Failed);
                schedulerQueue.Description = string.Format("InnerException: {0}; StackTrace: {1}", exception.InnerException, exception.StackTrace);

                return(BaseResponse.Success());
            }

            return(BaseResponse.Error(ErrorCode.SchedulerQueueItemNotFound));
        }
Exemplo n.º 7
0
 public void ChangeStatus(SchedulerTaskType type, SchedulerExecutionStatus fromStatus, SchedulerExecutionStatus toStatus, string destination, bool setStopDate = false)
 {
     if (!setStopDate)
     {
         Update(
             Query.And(
                 Query <SchedulerQueue> .EQ(e => e.TaskType, type),
                 Query <SchedulerQueue> .EQ(e => e.Status, fromStatus),
                 Query <SchedulerQueue> .EQ(e => e.Destination, destination)),
             Update <SchedulerQueue> .Set(e => e.Status, toStatus));
     }
     else
     {
         Update(
             Query.And(
                 Query <SchedulerQueue> .EQ(e => e.TaskType, type),
                 Query <SchedulerQueue> .EQ(e => e.Status, fromStatus),
                 Query <SchedulerQueue> .EQ(e => e.Destination, destination)),
             Update <SchedulerQueue>
             .Set(e => e.Status, toStatus)
             .Set(e => e.StopDate, DateTime.UtcNow));
     }
 }
        public static long GetLockerMask(this SchedulerTaskType schedulerTaskType)
        {
            long mask = 0x0000000000000001 << (int)schedulerTaskType;

            return(mask);
        }
Exemplo n.º 9
0
 public int Setup(int deviceId, DeviceType t, StreamType streamType,
     int sampleRate, SampleFormatType format, int numChannels,
     MMCSSCallType mmcssCall, MMThreadPriorityType threadPriority,
     SchedulerTaskType schedulerTask, ShareMode shareMode, DataFeedMode dataFeedMode,
     int latencyMillisec, int zeroFlushMillisec, int timePeriodHandredNanosec)
 {
     var args = new SetupArgs();
     args.deviceType = (int)t;
     args.streamType = (int)streamType;
     args.sampleRate = sampleRate;
     args.sampleFormat = (int)format;
     args.numChannels = numChannels;
     args.mmcssCall = (int)mmcssCall;
     args.mmThreadPriority = (int)threadPriority;
     args.schedulerTask = (int)schedulerTask;
     args.shareMode = (int)shareMode;
     args.dataFeedMode = (int)dataFeedMode;
     args.latencyMillisec = latencyMillisec;
     args.timePeriodHandledNanosec = timePeriodHandredNanosec;
     args.zeroFlushMillisec = zeroFlushMillisec;
     return WasapiIO_Setup(mId, deviceId, ref args);
 }
        public SchedulerTask GetByType(SchedulerTaskType type, string destination)
        {
            SchedulerTask schedulerTask = GetAll().FirstOrDefault(item => item.Type == type && item.Destination == destination);

            return(schedulerTask);
        }