Пример #1
0
		private CrontabSchedule(
			CrontabField minutes, CrontabField hours,
			CrontabField days, CrontabField months,
			CrontabField daysOfWeek)
		{
			Debug.Assert(minutes != null);
			Debug.Assert(hours != null);
			Debug.Assert(days != null);
			Debug.Assert(months != null);
			Debug.Assert(daysOfWeek != null);

			_minutes = minutes;
			_hours = hours;
			_days = days;
			_months = months;
			_daysOfWeek = daysOfWeek;
		}
Пример #2
0
		private static ValueOrError<CrontabSchedule> TryParse(string expression, ExceptionHandler onError)
		{
			if (expression == null)
				throw new ArgumentNullException("expression");

			var tokens = expression.Split(_separators, StringSplitOptions.RemoveEmptyEntries);

			if (tokens.Length != 5)
			{
				return ErrorHandling.OnError(() => new CrontabException(string.Format(
						   "'{0}' is not a valid crontab expression. It must contain at least 5 components of a schedule "
						   + "(in the sequence of minutes, hours, days, months, days of week).",
						   expression)), onError);
			}

			var fields = new CrontabField[5];

			for (var i = 0; i < fields.Length; i++)
			{
				var field = CrontabField.TryParse((CrontabFieldKind)i, tokens[i], onError);
				if (field.IsError)
					return field.ErrorProvider;

				fields[i] = field.Value;
			}

			return new CrontabSchedule(fields[0], fields[1], fields[2], fields[3], fields[4]);
		}
Пример #3
0
		public static ValueOrError<CrontabField> TryParse(CrontabFieldKind kind, string expression, ExceptionHandler onError)
		{
			var field = new CrontabField(CrontabFieldImpl.FromKind(kind));
			var error = field._impl.TryParse(expression, field.Accumulate, onError);
			return error == null ? field : (ValueOrError<CrontabField>)error;
		}