/// <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; }
/// <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; }