Sha256: 419f8b16fbd840a5df3739bd065972b82d83e3919433d82813b6fb623dab302d

Contents?: true

Size: 625 Bytes

Versions: 4

Compression:

Stored size: 625 Bytes

Contents

# frozen_string_literal: true

require 'fiber'

module CottonTail
  module Queue
    # A supervisor for a single queue
    class Supervisor
      def initialize(queue, on_message:)
        @queue = queue
        @on_message = on_message
      end

      def start
        process
      end

      # Start the supervisor, process all pending messages, and then stop
      def run
        @queue.close
        start.tap(&:join)
      end

      def running?
        true & process.status
      end

      private

      def process
        @process ||= Reader.spawn(@queue, on_message: @on_message)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cotton-tail-0.2.1 lib/cotton_tail/queue/supervisor.rb
cotton-tail-0.2.0 lib/cotton_tail/queue/supervisor.rb
cotton-tail-0.1.2 lib/cotton_tail/queue/supervisor.rb
cotton-tail-0.1.1 lib/cotton_tail/queue/supervisor.rb