Class: Webmidi::Middleware::Throttle

Inherits:
Base
  • Object
show all
Defined in:
lib/webmidi/middleware/timing_gate.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, interval:, **options) ⇒ Throttle

Returns a new instance of Throttle.



34
35
36
37
38
39
# File 'lib/webmidi/middleware/timing_gate.rb', line 34

def initialize(app, interval:, **options)
  super(app, **options)
  validate_interval!(interval)
  @interval = interval
  @last_sent = nil
end

Instance Method Details

#call(message) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/webmidi/middleware/timing_gate.rb', line 41

def call(message)
  now = message.timestamp
  return nil if @last_sent && (now - @last_sent) < @interval

  @last_sent = now
  @app.call(message)
end