##// END OF EJS Templates
Bound promise to CancellationToken...
Bound promise to CancellationToken Added new states to ExecutionSate enum. Added Safe.Guard() method to handle cleanup of the result of the promise

File last commit:

r209:a867536c68fc v2
r209:a867536c68fc v2
Show More
Safe.cs
132 lines | 4.4 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 Safe.DispatchEvent() a legacy equivalent for '?.Invoke()'...
r207 using System.Collections;
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();
}
}
cin
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()'...
r207 public static void Dispose(IEnumerable<IDisposable> objects) {
foreach (var d in objects)
if (d != null)
d.Dispose();
}
cin
Added Signal class a lightweight alternative to ManualResetEvent
r128 public static void Dispose(object obj) {
var d = obj as IDisposable;
if (d != null)
d.Dispose();
}
cin
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()'...
r207 public static void DispatchEvent<T>(this EventHandler<T> handler, object sender, T args) {
if (handler != null)
handler(sender, args);
}
public static void DispatchEvent(this EventHandler handler, object sender, EventArgs args) {
if (handler != null)
handler(sender, args);
}
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();
cin
Added ResetState to RunnableComponent to reset in case of failure...
r205 return Promise.Success;
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 } 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
Bound promise to CancellationToken...
r209
cin
Added utility class for safe disposing methods....
r1 }
}