##// END OF EJS Templates
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)...
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete) Implab.ServiceHost: rewritten TypeReference (added support for nested types), stable API

File last commit:

r248:5cb4826c2c2a v3
r278:6691aff01de1 v3
Show More
PromiseAll.cs
39 lines | 859 B | text/x-csharp | CSharpLexer
cin
Added awaiters to promises...
r248 using System;
using System.Threading;
namespace Implab
{
class PromiseAll : IResolvable {
int m_count;
readonly Deferred m_deferred;
public bool Done {
get { return m_deferred.Promise.IsResolved; }
}
public IPromise ResultPromise {
get { return m_deferred.Promise; }
}
public void AddPromise(IPromise promise) {
Interlocked.Increment(ref m_count);
}
public PromiseAll(Deferred deferred) {
m_deferred = deferred;
}
public void Resolve() {
if (Interlocked.Decrement(ref m_count) == 0)
m_deferred.Resolve();
}
public void Complete() {
Resolve();
}
public void Reject(Exception error) {
m_deferred.Reject(error);
}
}
}