Class: VoldemortClient
- Inherits:
-
Object
- Object
- VoldemortClient
- Defined in:
- lib/voldemort-rb.rb
Instance Attribute Summary collapse
-
#conflict_resolver ⇒ Object
Returns the value of attribute conflict_resolver.
-
#connection ⇒ Object
Returns the value of attribute connection.
-
#key_serializer ⇒ Object
Returns the value of attribute key_serializer.
-
#value_serializer ⇒ Object
Returns the value of attribute value_serializer.
Instance Method Summary collapse
- #delete(key) ⇒ Object
- #get(key) ⇒ Object
- #get_all(keys) ⇒ Object
-
#initialize(db_name, *hosts, &block) ⇒ VoldemortClient
constructor
A new instance of VoldemortClient.
- #put(key, value, version = nil) ⇒ Object
- #resolve_conflicts(versions) ⇒ Object
Constructor Details
#initialize(db_name, *hosts, &block) ⇒ VoldemortClient
Returns a new instance of VoldemortClient.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/voldemort-rb.rb', line 15 def initialize(db_name, *hosts, &block) self.conflict_resolver = block unless !block self.connection = TCPConnection.new(db_name, hosts) # implement and modifiy if you don't want to use TCP protobuf. self.connection.bootstrap case(self.connection.key_serializer_type) when 'json' self.key_serializer = VoldemortJsonBinarySerializer.new(self.connection.key_serializer_schemas) else self.key_serializer = VoldemortPassThroughSerializer.new({}) end case(self.connection.value_serializer_type) when 'json' self.value_serializer = VoldemortJsonBinarySerializer.new(self.connection.value_serializer_schemas) else self.value_serializer = VoldemortPassThroughSerializer.new({}) end end |
Instance Attribute Details
#conflict_resolver ⇒ Object
Returns the value of attribute conflict_resolver.
11 12 13 |
# File 'lib/voldemort-rb.rb', line 11 def conflict_resolver @conflict_resolver end |
#connection ⇒ Object
Returns the value of attribute connection.
10 11 12 |
# File 'lib/voldemort-rb.rb', line 10 def connection @connection end |
#key_serializer ⇒ Object
Returns the value of attribute key_serializer.
12 13 14 |
# File 'lib/voldemort-rb.rb', line 12 def key_serializer @key_serializer end |
#value_serializer ⇒ Object
Returns the value of attribute value_serializer.
13 14 15 |
# File 'lib/voldemort-rb.rb', line 13 def value_serializer @value_serializer end |
Instance Method Details
#delete(key) ⇒ Object
64 65 66 |
# File 'lib/voldemort-rb.rb', line 64 def delete(key) self.connection.delete(key_serializer.to_bytes(key)) end |
#get(key) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/voldemort-rb.rb', line 35 def get(key) versions = self.connection.get(key_serializer.to_bytes(key)) version = self.resolve_conflicts(versions.versioned) if version value_serializer.to_object(version.value) else nil end end |
#get_all(keys) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/voldemort-rb.rb', line 45 def get_all(keys) serialized_keys = [] keys.each do |key| serialized_keys << key_serializer.to_bytes(key) end all_version = self.connection.get_all(keys) values = {} all_version.values.collect do |v| values[v.key] = value_serializer.to_object(self.resolve_conflicts(v.versions).value) end values end |
#put(key, value, version = nil) ⇒ Object
60 61 62 |
# File 'lib/voldemort-rb.rb', line 60 def put(key, value, version = nil) self.connection.put(key_serializer.to_bytes(key), value_serializer.to_bytes(value)) end |
#resolve_conflicts(versions) ⇒ Object
68 69 70 71 72 |
# File 'lib/voldemort-rb.rb', line 68 def resolve_conflicts(versions) return self.conflict_resolver.call(versions) if self.conflict_resolver # by default just return the version that has the most recent timestamp. versions.max { |a, b| a.version. <=> b.version. } end |