Пример #1
0
        /// <summary>
        /// 从缓冲池里分配一个消息包
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static PacketReader AcquireContent(DogBuffer buffer)
        {
            var ret = s_pool.AcquireContent();

            ret.SetBuffer(buffer);
            return(ret);
        }
Пример #2
0
        /// <summary>
        /// 从缓冲池里分配一个消息包
        /// </summary>
        /// <param name="codeId"></param>
        /// <returns></returns>
        public static PacketWriter AcquireContent(ushort codeId)
        {
            var ret = s_pool.AcquireContent();

            ret.SetNetCode(codeId);
            return(ret);
        }
Пример #3
0
            public static UpdateEntityPool <T> AcquireContent(MangoDBService db, T entity)
            {
                var ret = s_pool.AcquireContent();

                ret.DB     = db;
                ret.Entity = entity;
                return(ret);
            }
Пример #4
0
        /// <summary>
        /// 从缓冲池里获得数据
        /// </summary>
        /// <returns></returns>
        public static DogBuffer32K GetFromPool32K()
        {
            var ret = s_pools32K.AcquireContent();

            ret.Use();
            ret.Length = 0;
            return(ret);
        }
Пример #5
0
        /// <summary>
        /// 从缓冲池里获得一个对象
        /// </summary>
        /// <returns></returns>
        public static ParamActionTaskT <T1, T> AcquireContent(string actionName)
        {
            var ret = TaskPool.AcquireContent();

            ret.isRelease   = false;
            ret.TaskProfile = ActionTaskProfile.GetNetTaskProfile(actionName);
            ret.CreateTime  = OneServer.NowTime;
            return(ret);
        }
Пример #6
0
        /// <summary>
        /// 从缓冲池里获得一个对象
        /// </summary>
        /// <returns></returns>
        public static NetTaskT <T> AcquireContent(ushort packetId)
        {
            var ret = TaskPool.AcquireContent();

            ret.isRelease   = false;
            ret.TaskProfile = NetTaskProfile.GetNetTaskProfile(packetId);
            ret.RecvTime    = OneServer.NowTime;
            ret._packetId   = packetId;
            return(ret);
        }
Пример #7
0
        public static SocketAsyncEventArgs AcquireSocketArg()
        {
            //Interlocked.Increment(ref s_OutstandingArgs);
            //Interlocked.Increment(ref s_AcquiredArgs);
            //Console.WriteLine("Acquiring SocketAsyncEventArg {0}:{1}", s_OutstandingArgs, s_AcquiredArgs);
            SocketAsyncEventArgs args = ObjectPoolMgr.AcquireContent();//.ObtainObject<SocketAsyncEventArgs>();

            CleanSocketArg(args);

            return(args);
        }
Пример #8
0
        internal void ObjectPoolTest()
        {
            ObjectPool <EntityClass> pool = new ObjectPool <EntityClass>("EntityClass", 64);

            pool.ReleaseContent(new EntityClass {
                Name = "first"
            });
            var entity = pool.AcquireContent();

            Log.Info(pool.GetPoolInfo().ToString());
        }
Пример #9
0
        /// <summary>
        /// 从缓冲池里获得数据
        /// </summary>
        /// <returns></returns>
        public static DogBuffer GetFromPool4K()
        {
            lock (lockOjb)
            {
start:
                var ret = s_pools.AcquireContent();
                if (ret.referenceCounter != 0)
                {
                    Logs.Error("dog buffer4k is used. counter = {0}", ret.referenceCounter);
#if DEBUG
                    var stack = new System.Diagnostics.StackTrace(0);
                    Logs.Info("dog buffer is used. strace = {0}", stack.ToString());
#endif
                    goto start;
                }

                ret.Use();
                //ret.referenceCounter++;
                ret.Length = 0;
                return(ret);
            }
        }
Пример #10
0
        /// <summary>
        /// 从缓冲池里获得数据
        /// </summary>
        /// <returns></returns>
        public static DogBuffer32K GetFromPool32K()
        {
            lock (lockOjb)
            {
start1:
                var ret = s_pools32K.AcquireContent();

                if (ret.referenceCounter != 0)
                {
                    Logs.Error("dog buffer32 is used.");
                    //Logs.Error(string.Format("buff is exists {0} exitstCount={1}", exitsList.Contains(ret).ToString(), exitsList.Count));
#if DEBUG
                    var stack = new System.Diagnostics.StackTrace(0);
                    Logs.Error("dog buffer is used. strace = {0}", stack.ToString());
#endif
                    goto start1;
                }
                //exitsList.Add(ret);
                //ret.referenceCounter++;
                ret.Use();
                ret.Length = 0;
                return(ret);
            }
        }