public virtual void MarkDead(Uri uri, int?deadTimeout, int?maxDeadTimeout)
        {
            EndpointState state = null;

            if (!this.UriLookup.TryGetValue(uri, out state))
            {
                return;
            }
            lock (state)
            {
                state.Date = this._dateTimeProvider.DeadTime(uri, state.Attemps, deadTimeout, maxDeadTimeout);
            }
        }
        public virtual void MarkAlive(Uri uri)
        {
            EndpointState state = null;

            if (!this.UriLookup.TryGetValue(uri, out state))
            {
                return;
            }
            lock (state)
            {
                var aliveTime = this._dateTimeProvider.AliveTime(uri, state.Attemps);
                state.Date    = aliveTime;
                state.Attemps = 0;
            }
        }