/// <summary> /// save the node id info /// </summary> private async Task <long> SaveNodeIDInfo(NodeTracer info) { NodeIDMapSummaryInfo summaryInfo = null; lock (_nodeIDMapping) { var data = _nodeIDMapping.FirstOrDefault(item => item.OrignalID.Equals(info.NodeID)); if (data != null) { _nodeIDIndexMap[data.AliasName].SaveNewItem(info.TraceID); return(data.AliasName); } summaryInfo = new() { AliasName = LuanNiao.Core.IDGen.GetInstance().NextId(), OrignalID = info.NodeID, OrignalIDLength = Encoding.UTF8.GetBytes(info.NodeID).Length }; _nodeIDMapping.Add(summaryInfo); } lock (_nodeIDMappingHandler) { _nodeIDMappingHandler.Position = _nodeIDMappingHandler.Length; _nodeIDMappingHandler.Write(BitConverter.GetBytes(summaryInfo.AliasName)); _nodeIDMappingHandler.Write(BitConverter.GetBytes(summaryInfo.OrignalIDLength)); _nodeIDMappingHandler.Write(Encoding.UTF8.GetBytes(summaryInfo.OrignalID)); _nodeIDMappingHandler.Flush(); } var indexFile = new FileInfo(Path.Combine(_srouceFolder, Constants.IndexFolder, $"{summaryInfo.AliasName}{Constants.NodeIDIndexFileExtends}")); var indexHandler = new NodeIDIndexHandler(indexFile); await indexHandler.LoadAsync(); _nodeIDIndexMap.Add(summaryInfo.AliasName, indexHandler.SaveNewItem(info.TraceID)); return(summaryInfo.AliasName); }
public int NodeTraceItemCount(NodeIDMapSummaryInfo nodeInfo) { if (_nodeIDIndexMap.ContainsKey(nodeInfo.AliasName)) { return(_nodeIDIndexMap[nodeInfo.AliasName].TraceIDList.Distinct().Count()); } return(0); }
public List <long> NodeTraceIDList(NodeIDMapSummaryInfo nodeInfo) { if (_nodeIDIndexMap.ContainsKey(nodeInfo.AliasName)) { return(_nodeIDIndexMap[nodeInfo.AliasName].TraceIDList.Distinct().ToList()); } return(default(List <long>)); }