public override void Sniff(IConnection connection, bool fromStartupHint = false)
        {
            if (fromStartupHint && _seenStartup)
                return;

            try
            {
                int seed; bool shouldPingHint;
                var uri = this.GetNext(null, out seed, out shouldPingHint);

                this._readerWriter.EnterWriteLock();
                var nodes = connection.Sniff(uri);
                if (!nodes.HasAny())
                    return;

                this._nodeUris = nodes;
                this._uriLookup = nodes.ToDictionary(k => k, v => new EndpointState());
                if (fromStartupHint)
                    this._seenStartup = true;

            }
            finally
            {
                this._readerWriter.ExitWriteLock();
            }
        }