The class uses a fast random context. The context is documented to be not thread-safe.

Currently, SendMessages is only called in a single thread, but in the future or in unit tests, this might change.
{
private:
    
    static constexpr unsigned int SHORT_BLOCK_PERIODS = 12;
    static constexpr unsigned int SHORT_SCALE = 1;
    
    static constexpr unsigned int MED_BLOCK_PERIODS = 24;
    static constexpr unsigned int MED_SCALE = 2;
    
    static constexpr unsigned int LONG_BLOCK_PERIODS = 42;
    static constexpr unsigned int LONG_SCALE = 24;
    
    static const unsigned int OLDEST_ESTIMATE_HISTORY = 6 * 1008;
    
    static constexpr double SHORT_DECAY = .962;
    
    static constexpr double MED_DECAY = .9952;
    
    static constexpr double LONG_DECAY = .99931;
    
    static constexpr double HALF_SUCCESS_PCT = .6;
    
    static constexpr double SUCCESS_PCT = .85;
    
    static constexpr double DOUBLE_SUCCESS_PCT = .95;
    
    static constexpr double SUFFICIENT_FEETXS = 0.1;