Sha256: 3f9c352944da7f0c1443ac54f344c7547f024f39c43f29887404d076228d323f
Contents?: true
Size: 744 Bytes
Versions: 25
Compression:
Stored size: 744 Bytes
Contents
# frozen_string_literal: true module BBK module App class Dispatcher class MessageStream CLOSE_VALUE = :close attr_reader :queue, :stream def initialize(size: 10) @queue = SizedQueue.new(size) @closed = false end def push(message) @queue.push(message) unless @closed end alias << push def each return to_enum unless block_given? return nil if @closed loop do value = @queue.pop break if value == CLOSE_VALUE yield(value) end end def close @closed = true @queue << CLOSE_VALUE end end end end end
Version data entries
25 entries across 25 versions & 1 rubygems