Class: Msf::MCP::Security::RateLimiter
- Inherits:
-
Object
- Object
- Msf::MCP::Security::RateLimiter
- Defined in:
- lib/msf/core/mcp/security/rate_limiter.rb
Instance Method Summary collapse
-
#check_rate_limit!(tool_name = nil) ⇒ Integer
Check if request is allowed, consume token if yes.
-
#initialize(requests_per_minute: 60, burst_size: nil) ⇒ RateLimiter
constructor
Initialize rate limiter with token bucket algorithm.
Constructor Details
#initialize(requests_per_minute: 60, burst_size: nil) ⇒ RateLimiter
Initialize rate limiter with token bucket algorithm
12 13 14 15 16 17 18 |
# File 'lib/msf/core/mcp/security/rate_limiter.rb', line 12 def initialize(requests_per_minute: 60, burst_size: nil) @requests_per_minute = requests_per_minute @burst_size = burst_size || requests_per_minute @tokens = @burst_size.to_f @last_refill = Time.now @mutex = Mutex.new end |
Instance Method Details
#check_rate_limit!(tool_name = nil) ⇒ Integer
Check if request is allowed, consume token if yes
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/msf/core/mcp/security/rate_limiter.rb', line 25 def check_rate_limit!(tool_name = nil) @mutex.synchronize do refill! if @tokens >= 1.0 @tokens -= 1.0 else # Calculate retry_after in seconds tokens_per_second = @requests_per_minute / 60.0 retry_after = ((1.0 - @tokens) / tokens_per_second).ceil raise RateLimitExceededError.new(retry_after) end end end |