Class: Tarantool::Client
- Inherits:
-
Object
- Object
- Tarantool::Client
- Defined in:
- tarantool-client/lib/tarantool/client.rb,
tarantool-client/lib/tarantool/client/row.rb,
tarantool-client/lib/tarantool/client/page.rb,
tarantool-client/lib/tarantool/client/pool.rb,
tarantool-client/lib/tarantool/client/uuid.rb,
tarantool-client/lib/tarantool/client/schema.rb,
tarantool-client/lib/tarantool/client/stream.rb,
tarantool-client/lib/tarantool/client/backoff.rb,
tarantool-client/lib/tarantool/client/version.rb,
tarantool-client/lib/tarantool/client/watcher.rb,
tarantool-client/lib/tarantool/client/interval.rb,
tarantool-client/lib/tarantool/client/watchers.rb,
tarantool-client/lib/tarantool/client/box_error.rb,
tarantool-client/lib/tarantool/client/index_info.rb,
tarantool-client/lib/tarantool/client/operations.rb,
tarantool-client/lib/tarantool/client/space_info.rb,
tarantool-client/lib/tarantool/client/sql_result.rb,
tarantool-client/lib/tarantool/client/diagnostics.rb,
tarantool-client/lib/tarantool/client/fork_safety.rb,
tarantool-client/lib/tarantool/client/pool/member.rb,
tarantool-client/lib/tarantool/client/thread_join.rb,
tarantool-client/lib/tarantool/client/tuple_shape.rb,
tarantool-client/lib/tarantool/client/batch_delete.rb,
tarantool-client/lib/tarantool/client/instrumented.rb,
tarantool-client/lib/tarantool/client/schema_cache.rb,
tarantool-client/lib/tarantool/client/configuration.rb,
tarantool-client/lib/tarantool/client/tuple_mapping.rb,
tarantool-client/lib/tarantool/client/callback_guard.rb,
tarantool-client/lib/tarantool/client/named_requests.rb,
tarantool-client/lib/tarantool/client/protocol/codec.rb,
tarantool-client/lib/tarantool/client/transport/link.rb,
tarantool-client/lib/tarantool/client/instrumentation.rb,
tarantool-client/lib/tarantool/client/pool/member_role.rb,
tarantool-client/lib/tarantool/client/transport/future.rb,
tarantool-client/lib/tarantool/client/protocol/greeting.rb,
tarantool-client/lib/tarantool/client/protocol/response.rb,
tarantool-client/lib/tarantool/client/transaction_scope.rb,
tarantool-client/lib/tarantool/client/prepared_statement.rb,
tarantool-client/lib/tarantool/client/protocol/constants.rb,
tarantool-client/lib/tarantool/client/transaction_schema.rb,
tarantool-client/lib/tarantool/client/transport/deadline.rb,
tarantool-client/lib/tarantool/client/protocol/extensions.rb,
tarantool-client/lib/tarantool/client/transport/handshake.rb,
tarantool-client/lib/tarantool/client/watchers/dispatcher.rb,
tarantool-client/lib/tarantool/client/protocol/requests/id.rb,
tarantool-client/lib/tarantool/client/transport/connection.rb,
tarantool-client/lib/tarantool/client/transport/link_state.rb,
tarantool-client/lib/tarantool/client/transport/stream_ids.rb,
tarantool-client/lib/tarantool/client/transport/timed_lock.rb,
tarantool-client/lib/tarantool/client/transport/timed_read.rb,
tarantool-client/lib/tarantool/client/transport/link_events.rb,
tarantool-client/lib/tarantool/client/protocol/requests/auth.rb,
tarantool-client/lib/tarantool/client/protocol/requests/call.rb,
tarantool-client/lib/tarantool/client/protocol/requests/eval.rb,
tarantool-client/lib/tarantool/client/protocol/requests/ping.rb,
tarantool-client/lib/tarantool/client/transport/frame_writer.rb,
tarantool-client/lib/tarantool/client/pool/member_fork_safety.rb,
tarantool-client/lib/tarantool/client/protocol/auth/chap_sha1.rb,
tarantool-client/lib/tarantool/client/protocol/requests/begin.rb,
tarantool-client/lib/tarantool/client/protocol/requests/watch.rb,
tarantool-client/lib/tarantool/client/transport/link_draining.rb,
tarantool-client/lib/tarantool/client/protocol/extensions/uuid.rb,
tarantool-client/lib/tarantool/client/protocol/requests/commit.rb,
tarantool-client/lib/tarantool/client/protocol/requests/delete.rb,
tarantool-client/lib/tarantool/client/protocol/requests/insert.rb,
tarantool-client/lib/tarantool/client/protocol/requests/select.rb,
tarantool-client/lib/tarantool/client/protocol/requests/update.rb,
tarantool-client/lib/tarantool/client/protocol/requests/upsert.rb,
tarantool-client/lib/tarantool/client/instrumentation/log_lines.rb,
tarantool-client/lib/tarantool/client/protocol/extensions/error.rb,
tarantool-client/lib/tarantool/client/protocol/requests/execute.rb,
tarantool-client/lib/tarantool/client/protocol/requests/prepare.rb,
tarantool-client/lib/tarantool/client/protocol/requests/replace.rb,
tarantool-client/lib/tarantool/client/protocol/requests/unwatch.rb,
tarantool-client/lib/tarantool/client/protocol/requests/rollback.rb,
tarantool-client/lib/tarantool/client/transport/pending_requests.rb,
tarantool-client/lib/tarantool/client/protocol/extensions/decimal.rb,
tarantool-client/lib/tarantool/client/protocol/extensions/datetime.rb,
tarantool-client/lib/tarantool/client/protocol/extensions/interval.rb,
tarantool-client/lib/tarantool/client/instrumentation/request_payload.rb,
tarantool-client/lib/tarantool/client/instrumentation/log_instrumenter.rb
Overview
Connection to one Tarantool instance. Safe to share between threads and fibers.
Defined Under Namespace
Classes: BoxError, Configuration, IndexInfo, Interval, Page, Pool, PreparedStatement, Row, SpaceInfo, SqlResult, Stream, UUID, Watcher
Constant Summary collapse
- VERSION =
'0.3.2'
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
- #close ⇒ Object
- #connected? ⇒ Boolean
-
#initialize(uri = nil) ⇒ Client
constructor
A new instance of Client.
- #inspect ⇒ Object
- #server_version ⇒ Object
- #transaction(isolation: :default, timeout: nil, &block) ⇒ Object
-
#watch(key, &block) ⇒ Object
The block gets the current value first (nil if the key was never broadcast), then every change.
Constructor Details
#initialize(uri = nil) ⇒ Client
Returns a new instance of Client.
103 104 105 106 107 108 109 110 111 112 |
# File 'tarantool-client/lib/tarantool/client.rb', line 103 def initialize(uri = nil, **) @config = Configuration.build(uri, **) @instrumentation = Instrumentation.build(@config) @pid = Process.pid @reinit_lock = Mutex.new open_link rescue StandardError @link&.close raise end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
96 97 98 |
# File 'tarantool-client/lib/tarantool/client.rb', line 96 def config @config end |
Instance Method Details
#close ⇒ Object
146 147 148 149 150 |
# File 'tarantool-client/lib/tarantool/client.rb', line 146 def close @link.close @watchers.close end |
#connected? ⇒ Boolean
119 120 121 |
# File 'tarantool-client/lib/tarantool/client.rb', line 119 def connected? @pid == Process.pid && @link.connected? end |
#inspect ⇒ Object
152 153 154 |
# File 'tarantool-client/lib/tarantool/client.rb', line 152 def inspect "#<#{self.class.name} #{@config.address}>" end |
#server_version ⇒ Object
114 115 116 117 |
# File 'tarantool-client/lib/tarantool/client.rb', line 114 def server_version ensure_fork_safe @link.greeting.version end |
#transaction(isolation: :default, timeout: nil, &block) ⇒ Object
123 124 125 126 127 128 129 130 131 132 |
# File 'tarantool-client/lib/tarantool/client.rb', line 123 def transaction(isolation: :default, timeout: nil, &block) ensure_fork_safe TransactionScope.enter(self) do stream = Stream.new( connection: @link.connection, schema_cache: @schema_cache, id: @stream_ids.next, request_timeout: @config.request_timeout, instrumentation: @instrumentation ) stream.transaction(isolation:, timeout:, &block) end end |
#watch(key, &block) ⇒ Object
The block gets the current value first (nil if the key was never broadcast), then every change. It runs on a dispatcher thread shared by all watchers of this client, so a slow block delays the others; exceptions it raises are reported with warn. Calling #unwatch from another thread may still let one in-flight callback run. After a reconnect the block is called again with the current value.
139 140 141 142 143 144 |
# File 'tarantool-client/lib/tarantool/client.rb', line 139 def watch(key, &block) raise ArgumentError, 'watch requires a block' unless block ensure_fork_safe @watchers.add(key, block) end |