##// END OF EJS Templates
Code review for RunnableComponent...
Code review for RunnableComponent Added StaApartment class based on System.Windows.Forms.Application message loop

File last commit:

r209:a867536c68fc v2
r210:5dc21f6a3222 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 }
}