Пример #1
0
            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();
            }
Пример #2
0
 public void Update(string queryDomain, DnsResourceRecordType queryType, StatsResponseType responseType, IPAddress clientIpAddress)
 {
     _lastHourStatCounters[DateTime.UtcNow.Minute].Update(queryDomain, queryType, responseType, clientIpAddress);
 }
Пример #3
0
 public void Update(DnsQuestionRecord query, StatsResponseType responseType, bool cacheHit, IPAddress clientIpAddress)
 {
     // TODO:
 }