Class: Html2rss::RequestService::Budget
- Inherits:
-
Object
- Object
- Html2rss::RequestService::Budget
- Defined in:
- lib/html2rss/request_service/budget.rb
Overview
Tracks how many outbound requests a single feed build may still perform.
Instance Method Summary collapse
-
#consume! ⇒ Integer
Consumes one request from the budget.
-
#initialize(max_requests:) ⇒ Budget
constructor
A new instance of Budget.
-
#remaining ⇒ Integer
Requests still available.
Constructor Details
#initialize(max_requests:) ⇒ Budget
Returns a new instance of Budget.
10 11 12 13 14 15 16 17 |
# File 'lib/html2rss/request_service/budget.rb', line 10 def initialize(max_requests:) unless max_requests.is_a?(Integer) && max_requests.positive? raise ArgumentError, 'max_requests must be positive' end @remaining = max_requests @mutex = Mutex.new end |
Instance Method Details
#consume! ⇒ Integer
Consumes one request from the budget.
24 25 26 27 28 29 30 |
# File 'lib/html2rss/request_service/budget.rb', line 24 def consume! @mutex.synchronize do raise RequestBudgetExceeded, 'Request budget exhausted' if @remaining.zero? @remaining -= 1 end end |
#remaining ⇒ Integer
Returns requests still available.
34 35 36 |
# File 'lib/html2rss/request_service/budget.rb', line 34 def remaining @mutex.synchronize { @remaining } end |