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