Class: Rufus::Tokyo::TyrantTable

Inherits:
Table
  • Object
show all
Includes:
Ext, Outlen, TyrantCommons
Defined in:
lib/rufus/tokyo/tyrant/table.rb

Overview

A Tokyo Cabinet table, but remoteā€¦

require 'rufus/tokyo/tyrant'
t = Rufus::Tokyo::Tyrant.new('127.0.0.1', 44001)
t['toto'] = { 'name' => 'toto the first', 'age' => '34' }
t['toto']
  # => { 'name' => 'toto the first', 'age' => '34' }

Most of the methods of this TyrantTable class are defined in the parent class Rufus::Tokyo::Table.

Constant Summary

Constants inherited from Table

Rufus::Tokyo::Table::INDEX_TYPES

Instance Attribute Summary collapse

Attributes included from HashMethods

#default_proc

Instance Method Summary collapse

Methods included from Ext

#ext

Methods included from Outlen

#outlen_op

Methods included from TyrantCommons

#compute_ext_opts, #stat

Methods inherited from Table

#[]=, #clear, #close, #delete, #delete_keys_with_prefix, #difference, #do_query, #generate_unique_id, #intersection, #keys, #lget, #path, #pointer, #prepare_query, #query, #query_delete, #search, #set_index, #size, #union

Methods included from HashMethods

#[], #default, #default=, #each, #merge, #merge!, #to_a, #to_h, #values

Constructor Details

#initialize(host, port = 0) ⇒ TyrantTable

Connects to the Tyrant table listening at the given host and port.

You start such a Tyrant with :

ttserver -port 44502 data.tct

and then :

require 'rufus/tokyo/tyrant'
t = Rufus::Tokyo::TyrantTable.new('127.0.0.1', 44502)
t['client0'] = { 'name' => 'Heike no Kyomori', 'country' => 'jp' }
t.close

You can start a Tokyo Tyrant and make it listen to a unix socket (not TCP) with :

ttserver -host /tmp/table_socket -port 0 data.tct

then :

require 'rufus/tokyo/tyrant'
t = Rufus::Tokyo::TyrantTable.new('/tmp/table_socket')
t['client0'] = { 'name' => 'Theodore Roosevelt', 'country' => 'usa' }
t.close


78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/rufus/tokyo/tyrant/table.rb', line 78

def initialize (host, port=0)

  @db = lib.tcrdbnew

  @host = host
  @port = port

  (lib.tcrdbopen(@db, host, port) == 1) ||
    raise(TokyoError.new("couldn't connect to tyrant at #{host}:#{port}"))

  if self.stat['type'] != 'table'

    self.close

    raise ArgumentError.new(
      "tyrant at #{host}:#{port} is a not table, " +
      "use Rufus::Tokyo::Tyrant instead to access it.")
  end
end

Instance Attribute Details

#hostObject (readonly)

Returns the value of attribute host.



50
51
52
# File 'lib/rufus/tokyo/tyrant/table.rb', line 50

def host
  @host
end

#portObject (readonly)

Returns the value of attribute port.



50
51
52
# File 'lib/rufus/tokyo/tyrant/table.rb', line 50

def port
  @port
end

Instance Method Details

#abortObject

:nodoc#



108
109
110
# File 'lib/rufus/tokyo/tyrant/table.rb', line 108

def abort #:nodoc#
  raise_transaction_nme('abort')
end

#libObject

using the cabinet lib



101
102
103
# File 'lib/rufus/tokyo/tyrant/table.rb', line 101

def lib
  TyrantLib
end

#tranabortObject

:nodoc#



117
118
119
# File 'lib/rufus/tokyo/tyrant/table.rb', line 117

def tranabort #:nodoc#
  raise_transaction_nme('tranabort')
end

#tranbeginObject

:nodoc#



111
112
113
# File 'lib/rufus/tokyo/tyrant/table.rb', line 111

def tranbegin #:nodoc#
  raise_transaction_nme('tranbegin')
end

#trancommitObject

:nodoc#



114
115
116
# File 'lib/rufus/tokyo/tyrant/table.rb', line 114

def trancommit #:nodoc#
  raise_transaction_nme('trancommit')
end

#transactionObject

:nodoc#



105
106
107
# File 'lib/rufus/tokyo/tyrant/table.rb', line 105

def transaction #:nodoc#
  raise_transaction_nme('transaction')
end