Sha256: cff1f7b457235794b5f59ba35e456f715afb60300890f2168573a07eccc3d60a

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module Dynflow
  module Semaphores
    class Abstract
      # Tries to get ticket from the semaphore
      # Returns true if thing got a ticket
      # Rturns false otherwise and puts the thing into the semaphore's queue
      def wait(thing)
        raise NotImplementedError
      end

      # Gets first object from the queue
      def get_waiting
        raise NotImplementedError
      end

      # Checks if there are objects in the queue
      def has_waiting?
        raise NotImpelementedError
      end

      # Returns n tickets to the semaphore
      def release(n = 1)
        raise NotImplementedError
      end

      # Saves the semaphore's state to some persistent storage
      def save
        raise NotImplementedError
      end

      # Tries to get n tickets
      # Returns n if the semaphore has free >= n
      # Returns free if n > free
      def get(n = 1)
        raise NotImplementedErrorn
      end

      # Requests all tickets
      # Returns all free tickets from the semaphore
      def drain
        raise NotImplementedError
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dynflow-1.9.0 lib/dynflow/semaphores/abstract.rb
dynflow-1.8.3 lib/dynflow/semaphores/abstract.rb