Class: Aspera::Agent::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/agent/base.rb

Overview

Base class for transfer agents

Direct Known Subclasses

Connect, Desktop, Direct, Httpgw, Node, Transferd

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.agent_listArray

discover available agents

Returns:

  • (Array)

    list of symbols of agents



20
21
22
23
24
25
# File 'lib/aspera/agent/base.rb', line 20

def agent_list
  base_class = File.basename(__FILE__)
  Dir.entries(File.dirname(File.expand_path(__FILE__))).select do |file|
    file.end_with?(RUBY_EXT) && !file.eql?(base_class)
  end.map{|file|file[0..(-1 - RUBY_EXT.length)].to_sym}
end

.factory_create(agent, options) ⇒ Object



12
13
14
15
16
# File 'lib/aspera/agent/base.rb', line 12

def factory_create(agent, options)
  # Aspera.assert_values(agent, agent_list)
  require "aspera/agent/#{agent}"
  Aspera::Agent.const_get(agent.to_s.capitalize).new(**options)
end

Instance Method Details

#wait_for_completionObject

Wait for all sessions to terminate and return the status of each session



29
30
31
32
33
34
35
36
# File 'lib/aspera/agent/base.rb', line 29

def wait_for_completion
  # list of: :success or "error message string"
  statuses = wait_for_transfers_completion
  @progress&.reset
  Aspera.assert_type(statuses, Array)
  Aspera.assert(statuses.none?{|i|!i.eql?(:success) && !i.is_a?(StandardError)}){"bad statuses content: #{statuses}"}
  return statuses
end