public void Update(string queryDomain, DnsResourceRecordType queryType, StatsResponseType responseType, IPAddress clientIpAddress) { if (_locked) { return; } if (clientIpAddress.IsIPv4MappedToIPv6) { clientIpAddress = clientIpAddress.MapToIPv4(); } Interlocked.Increment(ref _totalQueries); switch (responseType) { case StatsResponseType.NoError: _queryDomains.GetOrAdd(queryDomain, new Counter()).Increment(); Interlocked.Increment(ref _totalNoError); break; case StatsResponseType.ServerFailure: Interlocked.Increment(ref _totalServerFailure); break; case StatsResponseType.NameError: Interlocked.Increment(ref _totalNameError); break; case StatsResponseType.Refused: Interlocked.Increment(ref _totalRefused); break; case StatsResponseType.Blocked: _queryBlockedDomains.GetOrAdd(queryDomain, new Counter()).Increment(); Interlocked.Increment(ref _totalBlocked); break; } _queryTypes.GetOrAdd(queryType, new Counter()).Increment(); _clientIpAddresses.GetOrAdd(clientIpAddress, new Counter()).Increment(); }
public void Update(string queryDomain, DnsResourceRecordType queryType, StatsResponseType responseType, IPAddress clientIpAddress) { _lastHourStatCounters[DateTime.UtcNow.Minute].Update(queryDomain, queryType, responseType, clientIpAddress); }
public void Update(DnsQuestionRecord query, StatsResponseType responseType, bool cacheHit, IPAddress clientIpAddress) { // TODO: }