Class: OFlow::Link

Inherits:
Object
  • Object
show all
Defined in:
lib/oflow/link.rb

Overview

A Link is the data needed to link one Task with another so that when the ship() method is called the data can be delivered to the destination Task.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(flow_name, target_name, op) ⇒ Link

Creates a new Link. This is called from link() and route() methods on Tasks and Flows.

Parameters:

  • flow_name (Symbol|String)

    parent flow name to find the target task in or nil for this parent

  • target_name (Symbol)

    target Task base name

  • op (Symbol)

    operation to use on the target

  • ingress (true|false)

    indicates the Link is internal



24
25
26
27
28
29
# File 'lib/oflow/link.rb', line 24

def initialize(flow_name, target_name, op)
  @target_name = target_name
  @flow_name = flow_name
  @op = op
  @target = nil
end

Instance Attribute Details

#flow_nameObject (readonly)

Name of the target’s parent flow.



11
12
13
# File 'lib/oflow/link.rb', line 11

def flow_name
  @flow_name
end

#opObject (readonly)

Operation to provide the target.



13
14
15
# File 'lib/oflow/link.rb', line 13

def op
  @op
end

#targetObject (readonly)

The actual target Task.



15
16
17
# File 'lib/oflow/link.rb', line 15

def target
  @target
end

#target_nameObject (readonly)

Name of the target.



9
10
11
# File 'lib/oflow/link.rb', line 9

def target_name
  @target_name
end

Instance Method Details

#ship(box) ⇒ Object

Delivers a package (Box) to the target.

Parameters:

  • box (Box)

    package to deliver



33
34
35
# File 'lib/oflow/link.rb', line 33

def ship(box)
  @target.receive(@op, box)
end

#to_sObject Also known as: inspect

Returns a string representation of the Link.



38
39
40
41
42
43
44
# File 'lib/oflow/link.rb', line 38

def to_s()
  if @flow_name.nil?
    "Link{target_name: #{@target_name}, op: #{op}, target: #{@target}}"
  else
    "Link{target_name: #{@flow_name}:#{@target_name}, op: #{op}, target: #{@target}}"
  end
end