class Cassandra::Cluster::Schema::Fetchers::MultiVersion

Public Class Methods

new(registry) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1524 def initialize(registry)
1525   @registry = registry
1526   @versions = []
1527   @fetchers = {}
1528 end

Public Instance Methods

fetch(connection) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1534 def fetch(connection)
1535   find_fetcher(connection)
1536     .fetch(connection)
1537 rescue => e
1538   return Ione::Future.failed(e)
1539 end
fetch_aggregate(connection, keyspace_name, aggregate_name, aggregate_args) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1576 def fetch_aggregate(connection, keyspace_name, aggregate_name, aggregate_args)
1577   find_fetcher(connection)
1578     .fetch_aggregate(connection, keyspace_name, aggregate_name, aggregate_args)
1579 rescue => e
1580   return Ione::Future.failed(e)
1581 end
fetch_function(connection, keyspace_name, function_name, function_args) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1569 def fetch_function(connection, keyspace_name, function_name, function_args)
1570   find_fetcher(connection)
1571     .fetch_function(connection, keyspace_name, function_name, function_args)
1572 rescue => e
1573   return Ione::Future.failed(e)
1574 end
fetch_keyspace(connection, keyspace_name) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1541 def fetch_keyspace(connection, keyspace_name)
1542   find_fetcher(connection)
1543     .fetch_keyspace(connection, keyspace_name)
1544 rescue => e
1545   return Ione::Future.failed(e)
1546 end
fetch_materialized_view(connection, keyspace_name, view_name) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1555 def fetch_materialized_view(connection, keyspace_name, view_name)
1556   find_fetcher(connection)
1557     .fetch_materialized_view(connection, keyspace_name, view_name)
1558 rescue => e
1559   return Ione::Future.failed(e)
1560 end
fetch_table(connection, keyspace_name, table_name) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1548 def fetch_table(connection, keyspace_name, table_name)
1549   find_fetcher(connection)
1550     .fetch_table(connection, keyspace_name, table_name)
1551 rescue => e
1552   return Ione::Future.failed(e)
1553 end
fetch_type(connection, keyspace_name, type_name) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1562 def fetch_type(connection, keyspace_name, type_name)
1563   find_fetcher(connection)
1564     .fetch_type(connection, keyspace_name, type_name)
1565 rescue => e
1566   return Ione::Future.failed(e)
1567 end
parse_argument_types(connection, keyspace_name, argument_types) click to toggle source

parse an array of string argument types and return an array of [Cassandra::Type]s. @param connection a connection to a Cassandra node. @param keyspace_name [String] name of the keyspace. @param argument_types [Array<String>] array of argument types. @return [Array<Cassandra::Type>] array of parsed types.

     # File lib/cassandra/cluster/schema/fetchers.rb
1589 def parse_argument_types(connection, keyspace_name, argument_types)
1590   find_fetcher(connection).parse_argument_types(connection,
1591                                                 keyspace_name,
1592                                                 argument_types)
1593 end
when(version, &block) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1530 def when(version, &block)
1531   @versions << Version.new(version, block)
1532 end

Private Instance Methods

find_fetcher(connection) click to toggle source
     # File lib/cassandra/cluster/schema/fetchers.rb
1597 def find_fetcher(connection)
1598   host = @registry.host(connection.host)
1599 
1600   unless host
1601     ips = @registry.hosts.map(&:ip)
1602     raise Errors::ClientError,
1603           'unable to find release version for current host, ' \
1604           "connected to #{connection.host}, but cluster contains " \
1605           "#{ips}."
1606   end
1607 
1608   version = host.release_version
1609   unless version
1610     raise Errors::ClientError, 'unable to determine release ' \
1611                                "version for host: #{host.inspect}"
1612   end
1613 
1614   @fetchers[version] ||= begin
1615     current = @versions.find {|v| v.matches?(version)}
1616     unless current
1617       raise Errors::ClientError, 'unsupported release version ' \
1618                                  "#{version.inspect}."
1619     end
1620     current.fetcher
1621   end
1622 end