Sha256: 1022ee281ac1dec1da2904810aefeb3a0b44f3824e880cfee4313cdc58cdeb59
Contents?: true
Size: 1.64 KB
Versions: 3
Compression:
Stored size: 1.64 KB
Contents
# frozen_string_literal: true require 'uri' module Uricp class UriStrategy include Methadone::CLILogging def self.choose_strategy(options) current = options.reject { |k, _v| k.is_a? Symbol } strategy_list = [] while STRATEGIES.detect { |klass| @strategy = klass.new(current).appropriate? } debug "#{name}: Selected strategy #{@strategy.class.name}" strategy_list << @strategy current = @strategy.proposed_options end if incomplete_strategy?(strategy_list) raise Uricp::UnsupportedURLtype, "Unsupported transfer from #{options['from_uri']} to #{options['to_uri']}" end strategy_list end def self.incomplete_strategy?(list) list.empty? end # This is an ordered list from the most specific to the most general STRATEGIES = [ Strategy::RbdCachedGet, Strategy::RbdCacheClone, Strategy::RbdCacheCheck, Strategy::RbdSnap, Strategy::CachedGet, Strategy::PipedRemoteGet, Strategy::PipedRbdGet, Strategy::PipedCacheConvert, Strategy::PipedCache, Strategy::PipedLocalDecompress, Strategy::PipedDecompressLz4, Strategy::PipedDecompressXz, Strategy::LocalConvert, Strategy::LocalLink, Strategy::PipedCompress, Strategy::RbdCacheUpload, Strategy::RbdCachedPut, Strategy::RbdPut, Strategy::RbdCacheBaseSnap, Strategy::SegmentedRemotePut, Strategy::RemotePut, Strategy::PipedLocalCompress, Strategy::PipedLocalGet, Strategy::PipedLocalPut, Strategy::Cleaner, Strategy::RbdSweeper, Strategy::Sweeper ].freeze end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
uricp-0.0.37 | lib/uricp/uri_strategy.rb |
uricp-0.0.36 | lib/uricp/uri_strategy.rb |
uricp-0.0.35 | lib/uricp/uri_strategy.rb |