Exemplo n.º 1
0
        /// <summary>
        /// 处理ADD消息
        /// </summary>
        /// <param name="callerID"></param>
        /// <param name="lineHash"></param>
        /// <param name="content"></param>
        /// <param name="sc"></param>
        public static void DoAdd(string callerID, int lineHash, string content, SynchronousController sc)
        {
            TextLine targetLine = sc.TextDoc.GetLineByHash(lineHash);
            TextLine newLine    = new TextLine(content, lineHash);

            if (targetLine == null)
            {
                throw new Exception("不存在的lineHash值");
            }
            if (targetLine.NewLines.Count > 0)
            {
                TextLine oldLine = targetLine.NewLines.Dequeue();
                if (oldLine.ID < lineHash)
                {
                    TextLine positionLine = sc.TextDoc.ToAddNewLineAfterLine(newLine, oldLine);
                    int      position     = sc.TextDoc.GetIndexByHash(positionLine.ID);
                    sc.ToAddNewLine(position, content);
                }
                else if (oldLine.ID > lineHash)
                {
                    int positon = sc.TextDoc.GetIndexByHash(oldLine.ID) - 1;
                    sc.ToAddNewLine(positon, content);
                    sc.TextDoc.ToAddNewLineBeforeLine(newLine, oldLine);
                }
            }

            sc.MessageQueues.MessagesToSend.Enqueue(MessageWrapper.WriteMsg(callerID, sc.Identity, MessageType.VRF, lineHash, "ADD"));
        }
Exemplo n.º 2
0
 /// <summary>
 /// 处理INI消息
 /// </summary>
 /// <param name="lineHash"></param>
 /// <param name="content"></param>
 /// <param name="sc"></param>
 public static void DoIni(int lineHash, string content, SynchronousController sc)
 {
     sc.ToAddNewLine(lineHash, content);
 }