/// <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);
        }
Beispiel #2
0
 public int NodeTraceItemCount(NodeIDMapSummaryInfo nodeInfo)
 {
     if (_nodeIDIndexMap.ContainsKey(nodeInfo.AliasName))
     {
         return(_nodeIDIndexMap[nodeInfo.AliasName].TraceIDList.Distinct().Count());
     }
     return(0);
 }
Beispiel #3
0
 public List <long> NodeTraceIDList(NodeIDMapSummaryInfo nodeInfo)
 {
     if (_nodeIDIndexMap.ContainsKey(nodeInfo.AliasName))
     {
         return(_nodeIDIndexMap[nodeInfo.AliasName].TraceIDList.Distinct().ToList());
     }
     return(default(List <long>));
 }