Exemple #1
0
        internal static void RecycleMsg(NetMsg msg)
        {
            if (msg == null)
            {
                return;
            }

            int cap;
            int capacity      = msg.get_capacity();
            int capacityIndex = -1;

            for (int i = 0, count = sizes.Count(); i < count; i++)
            {
                cap = sizes[i];
                if (cap >= capacity)
                {
                    capacityIndex = i;
                    break;
                }
            }

            if (capacity >= 0)
            {
                SecurityQueue <NetMsg> idle = idlePool[capacityIndex];
                idle.Enqueue(msg);
            }
            else
            {
                Debugger.LogError("recycle net msg error");
            }
        }
Exemple #2
0
        internal static NetMsg GenNetMsg(int len)
        {
            if (len < 0)
            {
                return(null);
            }

            int capacity      = 0;
            int cap           = 1024;
            int capacityIndex = -1;

            for (int i = 0, count = sizes.Count; i < count; i++)
            {
                cap = sizes[i];
                if (cap >= len)
                {
                    capacity      = cap;
                    capacityIndex = i;
                    break;
                }
            }

            if (capacity == 0)
            {
                return(null);
            }

            SecurityQueue <NetMsg> idle = idlePool[capacityIndex];
            NetMsg msg;
            bool   re = idle.Dequeue(out msg);

            if (!re)
            {
                msg = new NetMsg();
                msg.init_data(capacity);
            }

            return(msg);
        }