public ResolveableObjectLock(object target, ILockResolver resolver) { this.target = target; this.@lock = new ReaderWriterLockSlim(); this.lockFailureResolver = resolver; }
public Base(IEnumerable <LockedObject> relatives, ILockResolver resolver) { LockedObject = new Locked <T>((T)this, relatives, resolver); lastId += 1; this.id = lastId; }
public Locked( T model, IEnumerable <LockedObject> lockables, ILockResolver resolver) { this.model = model; this.relatives = lockables; this.lockList = new ThreadLocal <LinkedList <ILockStateInternal> >(() => new LinkedList <ILockStateInternal>(new Locked().Yield())); if (resolver == null) { this.@lock = new FastObjectLock(); } else { this.@lock = new ResolveableObjectLock(model, resolver); } }
public Child(IEnumerable <LockedObject> relatives, ILockResolver resolver) : base(relatives, resolver) { }
public static (Locked <Root>, List <Locked <Parent> >, List <Locked <Child> >) GetHierarchyGraph(ILockResolver resolver) { var root = GetRoot(resolver); var parents = Enumerable .Range(0, 9) .Select(x => new Parent(new[] { root }, resolver).LockedObject) .ToList(); var children = parents .SelectMany(x => { return (Enumerable .Range(0, 9) .Select(y => new Child(new[] { x }, resolver).LockedObject)); }) .ToList(); return(root, parents, children); }
public static Locked <Child> GetChild(Locked <Parent> parent, ILockResolver resolver) { return(new Child(parent.Yield(), resolver).LockedObject); }
public static Locked <Parent> GetParent(Locked <Root> root, ILockResolver resolver) { return(new Parent(root.Yield(), resolver).LockedObject); }
public static Locked <Root> GetRoot(ILockResolver resolver) { return(new Root(Enumerable.Empty <LockedObject>(), resolver).LockedObject); }