Class: Tarantool::DB
- Inherits:
-
Object
show all
- Defined in:
- lib/tarantool.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#_shard(number) ⇒ Object
-
#close ⇒ Object
-
#close_connection ⇒ Object
-
#initialize(shards, replica_strategy, previous_shards_count, insert_to_previous_shard) ⇒ DB
constructor
-
#insert_with_shards_count ⇒ Object
-
#method_missing(name, *args) ⇒ Object
-
#primary_interface ⇒ Object
-
#query ⇒ Object
-
#shards_count ⇒ Object
-
#space(space_no, fields = [], opts = {}) ⇒ Object
-
#space_array(space_no, field_types = [], opts = {}) ⇒ Object
returns regular space, where fields are named by position.
-
#space_hash(space_no, fields, opts = {}) ⇒ Object
Constructor Details
#initialize(shards, replica_strategy, previous_shards_count, insert_to_previous_shard) ⇒ DB
Returns a new instance of DB.
76
77
78
79
80
81
82
83
|
# File 'lib/tarantool.rb', line 76
def initialize(shards, replica_strategy, previous_shards_count, insert_to_previous_shard)
@shards = shards
@replica_strategy = replica_strategy
@previous_shards_count = previous_shards_count
@insert_to_previous_shard = insert_to_previous_shard
@connections = {}
@closed = false
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object
119
120
121
122
123
124
125
|
# File 'lib/tarantool.rb', line 119
def method_missing(name, *args)
if query.respond_to?(name)
query.send(name, *args)
else
super
end
end
|
Instance Attribute Details
#closed ⇒ Object
Also known as:
closed?
Returns the value of attribute closed.
74
75
76
|
# File 'lib/tarantool.rb', line 74
def closed
@closed
end
|
#connections ⇒ Object
Returns the value of attribute connections.
74
75
76
|
# File 'lib/tarantool.rb', line 74
def connections
@connections
end
|
#previous_shards_count ⇒ Object
Returns the value of attribute previous_shards_count.
136
137
138
|
# File 'lib/tarantool.rb', line 136
def previous_shards_count
@previous_shards_count
end
|
Instance Method Details
#_shard(number) ⇒ Object
142
143
144
145
146
147
148
|
# File 'lib/tarantool.rb', line 142
def _shard(number)
@connections[number] ||= begin
@shards[number].map do |host, port|
IProto.get_connection(host, port, self.class::IPROTO_CONNECTION_TYPE)
end
end
end
|
#close ⇒ Object
127
128
129
130
|
# File 'lib/tarantool.rb', line 127
def close
@closed = true
close_connection
end
|
#close_connection ⇒ Object
150
151
152
153
154
155
|
# File 'lib/tarantool.rb', line 150
def close_connection
@connections.each do |number, replicas|
replicas.each(&:close)
end
@connections.clear
end
|
#insert_with_shards_count ⇒ Object
138
139
140
|
# File 'lib/tarantool.rb', line 138
def insert_with_shards_count
@insert_to_previous_shard && @previous_shards_count || @shards.count
end
|
#primary_interface ⇒ Object
157
158
159
|
# File 'lib/tarantool.rb', line 157
def primary_interface
raise NoMethodError, "#primary_interface should by overriden"
end
|
#query ⇒ Object
115
116
117
|
# File 'lib/tarantool.rb', line 115
def query
@query ||= self.class::Query.new(self)
end
|
#shards_count ⇒ Object
132
133
134
|
# File 'lib/tarantool.rb', line 132
def shards_count
@shards.count
end
|
#space(space_no, fields = [], opts = {}) ⇒ Object
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/tarantool.rb', line 96
def space(space_no, fields = [], opts = {})
case fields
when Array
space_array(space_no, fields, opts)
when Hash
space_hash(space_no, fields, opts)
else
raise "You should specify fields as an array or hash (got #{fields.inspect})"
end
end
|
#space_array(space_no, field_types = [], opts = {}) ⇒ Object
returns regular space, where fields are named by position
tarantool.space_block(0, [:int, :str, :int, :str], keys: [[0], [1,2]])
88
89
90
91
92
93
94
|
# File 'lib/tarantool.rb', line 88
def space_array(space_no, field_types = [], opts = {})
indexes = opts[:keys] || opts[:indexes]
shard_fields = opts[:shard_fields]
shard_proc = opts[:shard_proc]
self.class::SpaceArray.new(self, space_no, field_types, indexes,
shard_fields, shard_proc)
end
|
#space_hash(space_no, fields, opts = {}) ⇒ Object
107
108
109
110
111
112
113
|
# File 'lib/tarantool.rb', line 107
def space_hash(space_no, fields, opts = {})
indexes = opts[:keys] || opts[:indexes]
shard_fields = opts[:shard_fields]
shard_proc = opts[:shard_proc]
self.class::SpaceHash.new(self, space_no, fields, indexes,
shard_fields, shard_proc)
end
|