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

Alpha, Connect, Direct, Httpgw, Node, Trsdk

Constant Summary collapse

RUBY_EXT =
'.rb'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.agent_listObject

discover available agents



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

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



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

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



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

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