Example #1
0
        private void SaveToBuffer(string newString)
        {
            if (mBufferType == BetterStringBuilderBufferType.Both ||
                mBufferType == BetterStringBuilderBufferType.LocalOnly)
            {
                if (mLocalBuffer.Count < POOL_SIZE_LIMIT)
                {
                    mLocalBuffer.Add(newString);
                }
#if UNITY_EDITOR
                localDetecter.SetPooledObjectCount(mLocalBuffer.Count);
#endif
            }

            if (mBufferType == BetterStringBuilderBufferType.Both ||
                mBufferType == BetterStringBuilderBufferType.GlobalOnly)
            {
                if (mGlobalBuffer.Count < POOL_SIZE_LIMIT)
                {
                    mGlobalBuffer.Add(newString);
                }
#if UNITY_EDITOR
                globalDetecter.SetPooledObjectCount(mGlobalBuffer.Count);
#endif
            }
        }
        public static void RecycleBuffer(byte[] buffer)
        {
            if (buffer == null || buffer.Length == 0)
            {
                return;
            }
            if (bufferCount > BUFFER_POOL_SIZE)
            {
                return;
            }

            Queue <byte[]> bufferCache = null;

            lock (bufferPool)
            {
                if (!bufferPool.TryGetValue(buffer.Length, out bufferCache))
                {
                    bufferCache = new Queue <byte[]>();
                    bufferPool.Add(buffer.Length, bufferCache);
                }
                for (int i = 0; i < buffer.Length; i++)
                {
                    buffer[i] = (byte)0;
                }
                bufferCount++;
                bufferCache.Enqueue(buffer);
#if UNITY_EDITOR
                bufferDetecter.DecreseInstance();
                bufferDetecter.SetPooledObjectCount(bufferCount);
#endif
            }
        }
        public static void RecycleStream(StreamBuffer stream)
        {
            if (stream == null || stream.size == 0)
            {
                return;
            }
            Queue <StreamBuffer> streamCache = null;

            lock (streamPool)
            {
                if (!streamPool.TryGetValue(stream.size, out streamCache))
                {
                    streamCache = new Queue <StreamBuffer>();
                    streamPool.Add(stream.size, streamCache);
                }
                stream.ClearBuffer();
                stream.ResetStream();
                streamCount++;
                streamCache.Enqueue(stream);
#if UNITY_EDITOR
                streamDetecter.DecreseInstance();
                streamDetecter.SetPooledObjectCount(streamCount);
#endif
            }
        }
Example #4
0
            public void Release()
            {
                lock (pool)
                {
                    if (pool.Count < POOL_SIZE_LIMIT)
                    {
                        pool.Enqueue(this);
                    }
#if UNITY_EDITOR
                    detecter.DecreseInstance();
                    detecter.SetPooledObjectCount(pool.Count);
#endif
                }
            }