public SCG.IReadOnlyDictionary <Guid, bool> TestPacketIdsAreNew(IReadOnlySet <Guid> queryIds) { return(queryIds.ToDictionary( q => q, seenIds.TryAdd)); // var results = new SCG.Dictionary<Guid, bool>(); // // HashSet<Guid> newIdCandidates = new HashSet<Guid>(); // foreach (var queryId in queryIds) { // if (seenIds.Contains(queryId)) { // results[queryId] = false; // } else { // newIdCandidates.Add(queryId); // } // } // // lock (synchronization) { // var nextSeenIds = new HashSet<Guid>(seenIds); // foreach (var queryId in newIdCandidates) { // results[queryId] = nextSeenIds.Add(queryId); // } // seenIds = nextSeenIds; // } // // return results; }
public SCG.IReadOnlyDictionary<Guid, bool> TestPacketIdsAreNew(IReadOnlySet<Guid> queryIds) { return queryIds.ToDictionary( q => q, seenIds.TryAdd); // var results = new SCG.Dictionary<Guid, bool>(); // // HashSet<Guid> newIdCandidates = new HashSet<Guid>(); // foreach (var queryId in queryIds) { // if (seenIds.Contains(queryId)) { // results[queryId] = false; // } else { // newIdCandidates.Add(queryId); // } // } // // lock (synchronization) { // var nextSeenIds = new HashSet<Guid>(seenIds); // foreach (var queryId in newIdCandidates) { // results[queryId] = nextSeenIds.Add(queryId); // } // seenIds = nextSeenIds; // } // // return results; }