Class: Cassandra::Session
- Inherits:
-
Object
- Object
- Cassandra::Session
- Extended by:
- Forwardable
- Defined in:
- lib/cassandra/session.rb
Overview
Sessions are used for query execution. Each session tracks its current keyspace. A session should be reused as much as possible, however it is ok to create several independent session for interacting with different keyspaces in the same application.
Instance Method Summary collapse
-
#close ⇒ self
Synchronously closes current session.
-
#close_async ⇒ Cassandra::Future<Cassandra::Session>
Asynchronously closes current session.
-
#counter_batch {|batch| ... } ⇒ Statements::Batch
Returns a counter Cassandra::Statements::Batch instance and optionally yields it to a given block.
-
#execute(statement, options = nil) ⇒ Cassandra::Result
A blocking wrapper around #execute_async.
-
#execute_async(statement, options = nil) ⇒ Cassandra::Future<Cassandra::Result>
Executes a given statement and returns a future result.
-
#keyspace ⇒ String
Returns current keyspace.
-
#logged_batch {|batch| ... } ⇒ Statements::Batch
(also: #batch)
Returns a logged Cassandra::Statements::Batch instance and optionally yields it to a given block.
-
#prepare(statement, options = nil) ⇒ Cassandra::Statements::Prepared
A blocking wrapper around #prepare_async.
-
#prepare_async(statement, options = nil) ⇒ Cassandra::Future<Cassandra::Statements::Prepared>
Prepares a given statement and returns a future prepared statement.
-
#unlogged_batch {|batch| ... } ⇒ Statements::Batch
Returns a unlogged Cassandra::Statements::Batch instance and optionally yields it to a given block.
Instance Method Details
#close ⇒ self
Synchronously closes current session
234 235 236 |
# File 'lib/cassandra/session.rb', line 234 def close close_async.get end |
#close_async ⇒ Cassandra::Future<Cassandra::Session>
Asynchronously closes current session
215 216 217 218 219 220 221 222 223 224 225 226 227 |
# File 'lib/cassandra/session.rb', line 215 def close_async promise = @futures.promise @client.close.on_complete do |f| if f.resolved? promise.fulfill(self) else f.on_failure {|e| promise.break(e)} end end promise.future end |
#counter_batch {|batch| ... } ⇒ Statements::Batch
Returns a counter Cassandra::Statements::Batch instance and optionally yields it to a given block
205 206 207 208 209 |
# File 'lib/cassandra/session.rb', line 205 def counter_batch statement = Statements::Batch::Counter.new() yield(statement) if block_given? statement end |
#execute(statement, options = nil) ⇒ Cassandra::Result
A blocking wrapper around #execute_async
126 127 128 |
# File 'lib/cassandra/session.rb', line 126 def execute(statement, = nil) execute_async(statement, ).get end |
#execute_async(statement, options = nil) ⇒ Cassandra::Future<Cassandra::Result>
Positional arguments for simple statements are only supported starting with Apache Cassandra 2.0 and above.
Named arguments for simple statements are only supported starting with Apache Cassandra 2.1 and above.
Executes a given statement and returns a future result
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/cassandra/session.rb', line 89 def execute_async(statement, = nil) = () case statement when ::String Statements::Simple.new(statement, .arguments, .type_hints, .idempotent?).accept(@client, ) when Statement statement.accept(@client, ) else @futures.error(::ArgumentError.new("unsupported statement #{statement.inspect}")) end rescue => e @futures.error(e) end |
#keyspace ⇒ String
Returns current keyspace
29 |
# File 'lib/cassandra/session.rb', line 29 def_delegators :@client, :keyspace |
#logged_batch {|batch| ... } ⇒ Statements::Batch Also known as: batch
Returns a logged Cassandra::Statements::Batch instance and optionally yields it to a given block
184 185 186 187 188 |
# File 'lib/cassandra/session.rb', line 184 def logged_batch(&block) statement = Statements::Batch::Logged.new() yield(statement) if block_given? statement end |
#prepare(statement, options = nil) ⇒ Cassandra::Statements::Prepared
A blocking wrapper around #prepare_async
176 177 178 |
# File 'lib/cassandra/session.rb', line 176 def prepare(statement, = nil) prepare_async(statement, ).get end |
#prepare_async(statement, options = nil) ⇒ Cassandra::Future<Cassandra::Statements::Prepared>
Prepares a given statement and returns a future prepared statement
148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/cassandra/session.rb', line 148 def prepare_async(statement, = nil) = () case statement when ::String @client.prepare(statement, ) when Statements::Simple @client.prepare(statement.cql, ) else @futures.error(::ArgumentError.new("unsupported statement #{statement.inspect}")) end rescue => e @futures.error(e) end |
#unlogged_batch {|batch| ... } ⇒ Statements::Batch
Returns a unlogged Cassandra::Statements::Batch instance and optionally yields it to a given block
195 196 197 198 199 |
# File 'lib/cassandra/session.rb', line 195 def unlogged_batch statement = Statements::Batch::Unlogged.new() yield(statement) if block_given? statement end |