using System;
using System.Collections.Generic;
using System.Text;

namespace Edge.Core.UniversalApi.CommunicationProvider
{
    internal interface IEventThrottler
    {
        /// <summary>
        /// mute an event from a processor instance for a while, mostly used for limit the frequently firing events.
        /// </summary>
        /// <param name="processorMetaConfigName">used for identify a processor's instance</param>
        /// <param name="eventName"></param>
        /// <param name="eventBatchId">only the event data contains the batch id can support throttling</param>
        /// <param name="period">null for remove the throttle for target event</param>
        void Throttle(string processorMetaConfigName, string eventName, string eventBatchId, TimeSpan? period);
    }
}