Exemple #1
0
 /// <summary>
 /// 查找数据测试
 /// </summary>
 private static void searchDictionary()
 {
     try
     {
         time.Restart();
         int value;
         for (int loopCount = count / keyCount; loopCount != 0; --loopCount)
         {
             for (int index = keyCount; index != 0;)
             {
                 if (!dictionary.TryGetValue(keys[--index], out value))
                 {
                     isError = true;
                     Console.WriteLine("ERROR");
                     return;
                 }
             }
         }
         time.Stop();
     }
     finally
     {
         dictionary.Clear();
         wait.Set();
     }
 }
 /// <summary>
 /// 获取下一个节点
 /// </summary>
 /// <param name="parser"></param>
 /// <returns></returns>
 private nodeType getNext(ref OperationParameter.NodeParser parser)
 {
     keyType key;
     if (HashCodeKey<keyType>.Get(ref parser, out key))
     {
         nodeType node;
         if (dictionary.TryGetValue(key, out node)) return node;
         parser.ReturnParameter.ReturnType = ReturnType.NotFoundDictionaryKey;
     }
     return null;
 }
Exemple #3
0
        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="parser"></param>
        private unsafe void update(ref OperationParameter.NodeParser parser)
        {
            keyType key;

            if (HashCodeKey <keyType> .Get(ref parser, out key))
            {
                valueType value;
                if (Dictionary.TryGetValue(key, out value))
                {
                    byte *read = parser.Read;
                    if (parser.LoadValueData() && !parser.IsEnd)
                    {
                        valueType updateValue = ValueData.Data <valueType> .GetData(ref parser.ValueData);

                        if (parser.LoadValueData() && parser.ValueData.Type == ValueData.DataType.UInt)
                        {
                            uint type = parser.ValueData.Int64.UInt;
                            OperationUpdater.LogicType logicType = (OperationUpdater.LogicType)(byte)(type >> 16);
                            if (logicType != OperationUpdater.LogicType.None && parser.LoadValueData() && parser.IsEnd)
                            {
                                if (OperationUpdater.Data <valueType> .IsLogicData(logicType, value, ValueData.Data <valueType> .GetData(ref parser.ValueData)))
                                {
                                    logicType = OperationUpdater.LogicType.None;
                                }
                                else
                                {
                                    parser.ReturnParameter.ReturnType = ReturnType.Success;
                                    ValueData.Data <valueType> .SetData(ref parser.ReturnParameter, value);

                                    return;
                                }
                            }
                            if (logicType == OperationUpdater.LogicType.None && parser.IsEnd)
                            {
                                switch (parser.ReturnParameter.ReturnType = OperationUpdater.Data <valueType> .UpdateData((OperationUpdater.OperationType)(ushort) type, ref value, updateValue))
                                {
                                case ReturnType.Success:
                                    Dictionary.Set(key, value);
                                    parser.UpdateOperation(read, value, OperationParameter.OperationType.SetValue);
                                    goto SETDATA;

                                case ReturnType.Unknown:
                                    parser.ReturnParameter.ReturnType = ReturnType.Success;
SETDATA:
                                    ValueData.Data <valueType> .SetData(ref parser.ReturnParameter, value);

                                    return;
                                }
                                return;
                            }
                        }
                    }
                }
                else
                {
                    parser.ReturnParameter.ReturnType = ReturnType.NotFoundDictionaryKey;
                    return;
                }
            }
            parser.ReturnParameter.ReturnType = ReturnType.ValueDataLoadError;
        }