Sha256: 7a89fa5839434861722067ff35719ef6de69a28b96195b613b118f59bb999088

Contents?: true

Size: 916 Bytes

Versions: 5

Compression:

Stored size: 916 Bytes

Contents

# frozen_string_literal: true

require_relative "buffer"

module Fusuma
  module Plugin
    module Buffers
      # manage events and generate command
      class TimerBuffer < Buffer
        DEFAULT_SOURCE = "timer_input"
        DEFAULT_SECONDS_TO_KEEP = 3

        def config_param_types
          {
            source: [String],
            seconds_to_keep: [Float, Integer]
          }
        end

        # @param event [Event]
        # @return [Buffer, NilClass]
        def buffer(event)
          return if event&.tag != source

          @events.push(event)
          self
        end

        def clear_expired(current_time: Time.now)
          @seconds_to_keep ||= (config_params(:seconds_to_keep) || DEFAULT_SECONDS_TO_KEEP)
          @events.each do |e|
            break if current_time - e.time < @seconds_to_keep

            @events.delete(e)
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fusuma-3.7.0 lib/fusuma/plugin/buffers/timer_buffer.rb
fusuma-3.6.2 lib/fusuma/plugin/buffers/timer_buffer.rb
fusuma-3.6.1 lib/fusuma/plugin/buffers/timer_buffer.rb
fusuma-3.6.0 lib/fusuma/plugin/buffers/timer_buffer.rb
fusuma-3.5.0 lib/fusuma/plugin/buffers/timer_buffer.rb