Example #1
0
        /// <summary>
        /// 消息回调
        /// </summary>
        /// <param name="message"></param>
        private void sendMessage(ref DistributionMessageItem message)
        {
            bool isNext = false;

            do
            {
                if (getters[getterIndex].Send(sendIdentity, ref message.Data, ref isNext))
                {
                    message.OnSend();
                    nextSendIndex();
                    if (isNext && ++getterIndex == getterCount)
                    {
                        getterIndex = 0;
                    }
                    return;
                }
                if (--getterCount == 0)
                {
                    getters[0].OnGetMessage = null;
                    return;
                }
                if (getterIndex == getterCount)
                {
                    getterIndex = 0;
                }
                else
                {
                    getters[getterIndex] = getters[getterCount];
                }
                getters[getterCount].OnGetMessage = null;
            }while (true);
        }