##// END OF EJS Templates
Added 'Fail' method to RunnableComponent which allows component to move from...
Added 'Fail' method to RunnableComponent which allows component to move from Running to Failed state. Added PollingComponent a timer based runnable component More tests Added FailPromise a thin class to wrap exceptions Fixed error handling in SuccessPromise classes.

File last commit:

r203:4d9830a9bbb8 v2
r203:4d9830a9bbb8 v2
Show More
Safe.cs
114 lines | 3.8 KiB | text/x-csharp | CSharpLexer
cin
Added utility class for safe disposing methods....
r1 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
cin
Added methods for parameter checks
r51 using System.Text.RegularExpressions;
cin
Refactoring
r66 using System.Diagnostics;
cin
Added utility class for safe disposing methods....
r1
namespace Implab
{
public static class Safe
{
cin
DFA refactoring
r161 public static void ArgumentAssert(bool condition, string paramName) {
if (!condition)
throw new ArgumentException("The parameter is invalid", paramName);
}
cin
working version of AsyncQueue and batch operations...
r121 public static void ArgumentMatch(string value, string paramName, Regex rx) {
cin
Added methods for parameter checks
r51 if (rx == null)
throw new ArgumentNullException("rx");
cin
working version of AsyncQueue and batch operations...
r121 if (!rx.IsMatch(value))
throw new ArgumentException(String.Format("The prameter value must match {0}", rx), paramName);
cin
Added methods for parameter checks
r51 }
cin
working version of AsyncQueue and batch operations...
r121 public static void ArgumentNotEmpty(string value, string paramName) {
if (String.IsNullOrEmpty(value))
throw new ArgumentException("The parameter can't be empty", paramName);
cin
code cleanup
r90 }
cin
working version of AsyncQueue and batch operations...
r121 public static void ArgumentNotEmpty<T>(T[] value, string paramName) {
if (value == null || value.Length == 0)
throw new ArgumentException("The array must be not emty", paramName);
cin
Added methods for parameter checks
r51 }
cin
working version of AsyncQueue and batch operations...
r121 public static void ArgumentNotNull(object value, string paramName) {
if (value == null)
throw new ArgumentNullException(paramName);
cin
Added methods for parameter checks
r51 }
cin
working version of AsyncQueue and batch operations...
r121 public static void ArgumentInRange(int value, int min, int max, string paramName) {
if (value < min || value > max)
throw new ArgumentOutOfRangeException(paramName);
cin
Added initial JSON support...
r55 }
cin
refactoring
r177 public static void ArgumentOfType(object value, Type type, string paramName) {
if (!type.IsInstanceOfType(value))
throw new ArgumentException(String.Format("The parameter must be of type {0}", type), paramName);
}
cin
Added Signal class a lightweight alternative to ManualResetEvent
r128 public static void Dispose(params IDisposable[] objects) {
foreach (var d in objects)
cin
minor changes
r126 if (d != null)
d.Dispose();
cin
Added utility class for safe disposing methods....
r1 }
cin
Refactoring
r66
cin
Added Signal class a lightweight alternative to ManualResetEvent
r128 public static void Dispose(params object[] objects) {
foreach (var obj in objects) {
var d = obj as IDisposable;
if (d != null)
d.Dispose();
}
}
public static void Dispose(object obj) {
var d = obj as IDisposable;
if (d != null)
d.Dispose();
}
cin
Refactoring
r66 [DebuggerStepThrough]
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 public static IPromise<T> Run<T>(Func<T> action) {
cin
minor changes
r131 ArgumentNotNull(action, "action");
try {
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 return Promise<T>.FromResult(action());
cin
minor changes
r131 } catch (Exception err) {
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 return Promise<T>.FromException(err);
cin
minor changes
r131 }
}
[DebuggerStepThrough]
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 public static IPromise Run(Action action) {
ArgumentNotNull(action, "action");
try {
action();
return Promise.SUCCESS;
} catch (Exception err) {
return new FailedPromise(err);
}
}
[DebuggerStepThrough]
public static IPromise Run(Func<IPromise> action) {
ArgumentNotNull(action, "action");
try {
return action() ?? new FailedPromise(new Exception("The action returned null"));
} catch (Exception err) {
return new FailedPromise(err);
}
}
[DebuggerStepThrough]
public static IPromise<T> Run<T>(Func<IPromise<T>> action) {
cin
Refactoring
r66 ArgumentNotNull(action, "action");
try {
cin
RC: cancellation support for promises + tests
r145 return action() ?? Promise<T>.FromException(new Exception("The action returned null"));
cin
Refactoring
r66 } catch (Exception err) {
cin
RC: cancellation support for promises + tests
r145 return Promise<T>.FromException(err);
cin
Refactoring
r66 }
}
cin
Added utility class for safe disposing methods....
r1 }
}