# Class: Concurrent::SerializedExecutionDelegator

Inherits:
  SimpleDelegator
  - Object
  - SimpleDelegator
  - Concurrent::SerializedExecutionDelegator
  show all

Defined in:
  lib/concurrent/executor/serialized_execution_delegator.rb

## Overview

A wrapper/delegator for any `ExecutorService` that guarantees serialized execution of tasks.

See Also:

- [SimpleDelegator](http://www.ruby-doc.org/stdlib-2.1.2/libdoc/delegate/rdoc/SimpleDelegator.html)
- SerializedExecution

## Instance Method Summary collapse

- #initialize(executor) ⇒ SerializedExecutionDelegator constructor

  A new instance of SerializedExecutionDelegator.

- #post(*args) { ... } ⇒ Boolean

  Submit a task to the executor for asynchronous processing.

## Constructor Details

### #initialize(executor) ⇒ `SerializedExecutionDelegator`

Returns a new instance of SerializedExecutionDelegator

    15
    16
    17
    18
    19

    # File 'lib/concurrent/executor/serialized_execution_delegator.rb', line 15

    def initialize(executor)
      @executor   = executor
      @serializer = SerializedExecution.new
      super(executor)
    end

## Instance Method Details

### #post(*args) { ... } ⇒ `Boolean`

Submit a task to the executor for asynchronous processing.

Parameters:

- args (`Array`) —

  zero or more arguments to be passed to the task

Yields:

- the asynchronous task to perform

Returns:

- (`Boolean`) —

  `true` if the task is queued, `false` if the executor is not running

Raises:

- (`ArgumentError`) —

  if no task is given

    22
    23
    24
    25
    26

    # File 'lib/concurrent/executor/serialized_execution_delegator.rb', line 22

    def post(*args, &task)
      raise ArgumentError.new('no block given') unless block_given?
      return false unless running?
      @serializer.post(@executor, *args, &task)
    end