public IRecyclePool Create(string poolType, IRecycleProcesser processer, IRecycleFactory factory = null) { RecyclePool pool = null; if (!this.pools.TryGetValue(poolType, out pool)) { this.pools.Add(poolType, pool = new RecyclePool(processer, factory)); } return(pool); }
/// <summary> /// Sets the source <see cref="IRecycleFactory"/> that produced and recycles current <see cref="IRecyclable"/>. /// </summary> /// <param name="factory">An <see cref="IRecycleFactory"/> that recycles current object.</param> void IRecyclable.SetSourceFactory(IRecycleFactory factory) { if (_sourceFactory != null) throw new InvalidOperationException("Cannot modify source recycle factory."); _sourceFactory = factory; }
public CreateObjectAsyncTask(ObjectJar jar, string type, IRecycleProcesser processer, IRecycleFactory factory) : base(false) { factory.CreateObjectAsync(type, obj => { processer.ReclaimObject(obj); jar.Drop(obj); this.completed = true; }); }
public RecyclePool(IRecycleProcesser processer, IRecycleFactory factory) { this.processer = processer; this.factory = factory; }