Class: Ilios::Cassandra::Session
- Inherits:
-
Object
- Object
- Ilios::Cassandra::Session
- Defined in:
- ext/ilios/ilios.c
Instance Method Summary collapse
- #execute(statement) ⇒ Object
- #execute_async(statement) ⇒ Object
- #prepare(query) ⇒ Object
- #prepare_async(query) ⇒ Object
Instance Method Details
#execute(statement) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'ext/ilios/session.c', line 115
static VALUE session_execute(VALUE self, VALUE statement)
{
CassandraSession *cassandra_session;
CassandraStatement *cassandra_statement;
CassandraResult *cassandra_result;
CassStatement *executed_statement;
CassFuture *result_future;
VALUE cassandra_result_obj;
GET_SESSION(self, cassandra_session);
GET_STATEMENT(statement, cassandra_statement);
executed_statement = statement_build_for_execution(cassandra_statement);
result_future = nogvl_session_execute(cassandra_session->session, executed_statement);
cassandra_result_obj = CREATE_RESULT(cassandra_result);
cassandra_result->executed_statement = executed_statement;
cassandra_result->future = result_future;
cassandra_result->statement_obj = statement;
result_await(cassandra_result);
return cassandra_result_obj;
}
|
#execute_async(statement) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'ext/ilios/session.c', line 83
static VALUE session_execute_async(VALUE self, VALUE statement)
{
CassandraSession *cassandra_session;
CassandraStatement *cassandra_statement;
CassandraFuture *cassandra_future;
CassStatement *executed_statement;
CassFuture *result_future;
VALUE future;
GET_SESSION(self, cassandra_session);
GET_STATEMENT(statement, cassandra_statement);
// Execute a dedicated statement so that later re-binds of `statement`
// cannot race with the driver's asynchronous encoding (issue #12).
executed_statement = statement_build_for_execution(cassandra_statement);
result_future = nogvl_session_execute(cassandra_session->session, executed_statement);
future = future_create(result_future, self, statement, execute_async);
GET_FUTURE(future, cassandra_future);
// The future owns the executed statement and frees it on destroy.
cassandra_future->executed_statement = executed_statement;
return future;
}
|
#prepare(query) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'ext/ilios/session.c', line 46
static VALUE session_prepare(VALUE self, VALUE query)
{
CassandraSession *cassandra_session;
CassandraStatement *cassandra_statement;
CassFuture *prepare_future;
VALUE cassandra_statement_obj;
GET_SESSION(self, cassandra_session);
prepare_future = nogvl_session_prepare(cassandra_session->session, query);
nogvl_future_wait(prepare_future);
if (cass_future_error_code(prepare_future) != CASS_OK) {
VALUE error = ilios_future_error_new(eExecutionError, "Unable to prepare query", prepare_future);
cass_future_free(prepare_future);
rb_exc_raise(error);
}
cassandra_statement_obj = CREATE_STATEMENT(cassandra_statement);
cassandra_statement->prepared = cass_future_get_prepared(prepare_future);
cassandra_statement->statement = cass_prepared_bind(cassandra_statement->prepared);
cassandra_statement->session_obj = self;
cass_future_free(prepare_future);
statement_default_config(cassandra_statement);
return cassandra_statement_obj;
}
|
#prepare_async(query) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'ext/ilios/session.c', line 27
static VALUE session_prepare_async(VALUE self, VALUE query)
{
CassandraSession *cassandra_session;
CassFuture *prepare_future;
GET_SESSION(self, cassandra_session);
prepare_future = nogvl_session_prepare(cassandra_session->session, query);
return future_create(prepare_future, self, Qnil, prepare_async);
}
|