示例#1
0
        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;
        }
示例#3
0
 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;
     });
 }
示例#4
0
 public RecyclePool(IRecycleProcesser processer, IRecycleFactory factory)
 {
     this.processer = processer;
     this.factory   = factory;
 }